создание страницы входа с компиляцией данных в sqlite3 - PullRequest
0 голосов
/ 01 апреля 2011

Я пытаюсь создать страницу входа в свое приложение. Для этого я использую базу данных sqlite (tripmapper.db3 это имя базы данных), которая имеет таблицу UserInformation Для этого используйте код птицы:

 -(void)checkindatabase
{
NSString *direct = [[NSString alloc]init] ;
NSString *dbPath = [direct stringByAppendingPathComponent:@"journeymapper.db3"];


if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
    NSLog(@"open");
    NSString *sql = [[NSString alloc] initWithFormat:@"select Username='%@',Password='%@' from UserInformation",txtuser.text,txtpass.text];
    //[sql UTF8String];
        //NSLog(@"'%s'",[sql UTF8String]);
    sqlite3_stmt *statment;
    if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &statment, NULL) == SQLITE_OK)
    {
         if(sqlite3_step(statment) == SQLITE_ROW)
         {

             UIAlertView* alert = [[UIAlertView alloc] initWithTitle:nil
                                                    message:@"Welcome to joureny" delegate:nil 
                                                   cancelButtonTitle:@"OK" otherButtonTitles:nil];
             [alert show];
             [alert release];  
         }


    }


    sqlite3_finalize(statment);

}
sqlite3_close(database);
}

-(IBAction)login
{
    [self checkindatabase]; 
}

Я ввожу правильное имя пользователя и пароль, но это не показывает мне, как мне этого добиться. Пожалуйста, помогите мне, как я могу создать страницу входа в систему.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Возможно, 2 из ваших назначений неверны. проверьте dbpath и запрос

1

    NSArray *dirPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir =[dirPath objectAtIndex:0];
    NSString *databasePath =[[NSString alloc] initWithString:[docDir stringByAppendingPathComponent:@"dbname.db"]];

2

Изменить ваш запрос на

NSString *sql = [[NSString alloc] initWithFormat:@"select * from UserInformation where Username='%@' and Password='%@'",txtuser.text,txtpass.text];

если он вернет что-то ... Ваше имя пользователя и пароль верны. Или один из текстов верен

Отредактированный ответ

 //To check open DB or not   
 if(open DB)
   //ur code
 else
  NSLog(@"open fails & error is ::%s",sqlite3_errmsg(contactDB));

 // To validate Password    

 if (sqlite3_prepare_v2(contactDB, [sql UTF8String], -1, &statement, NULL) == SQLITE_OK)
  {   if(sqlite3_step(statement) == SQLITE_ROW)
            { 
         //user name is correct
         //if u want to print in log use below code  
         NSString *username=[[NSString alloc] initWithUTF8String:(const char *)       sqlite3_column_text(statement,0)];  
         NSString *password = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement,1)];

            }
       else    
         // Authentication failed
  }

С наилучшими пожеланиями,

0 голосов
/ 03 мая 2012

Используйте это, я думаю, это будет полезно для вас.

databasePath = [[NSBundle mainBundle]pathForResource:@"ApplicationData" ofType:@"db"];  
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &adddata) == SQLITE_OK)
{
    NSLog(@"open");


    NSString *querySQL = [NSString stringWithFormat: @"SELECT * FROM login WHERE username=\"%@\" and password=\"%@\"",userNameText.text,passWordText.text];
    NSLog(@"%@",querySQL);

    const char *query_stmt = [querySQL UTF8String];
    sqlite3_stmt *statement;

    int c=sqlite3_prepare_v2(adddata, query_stmt, -1, &statement, NULL); 
    NSLog(@"%d",c);
    if (sqlite3_prepare_v2(adddata, query_stmt, -1, &statement, NULL)==SQLITE_OK)
    {
        if(sqlite3_step(statement)==SQLITE_ROW)
        {


            NewViewController *contacts=[[NewViewController alloc]initWithNibName:@"NewViewController" bundle:nil];
            [self presentModalViewController:contacts animated:YES];
    }

    else 
        {
            alert=[[UIAlertView alloc]initWithTitle:@"alert" message:@"Incorrect username & password" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
            [alert show];  

            userNameText.text=@"";
            passWordText.text=@"";
        }
    }

    sqlite3_close(adddata);    
}

и в .h файле вы также используете этот

#import "/usr/include/sqlite3.h"
sqlite3 *adddata;
NSString *databasePath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...