检查iphone中的登录名和密码

时间:2011-12-14 07:24:53

标签: iphone ios

您好我正在尝试使用SQLite为我的应用创建一个登录名和密码,每件事情都很好但是一旦按下登录按钮就没有进入主页!!!!

请在下面找到我的代码:

-(void)checkindatabase{

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


    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSLog(@"open");
        NSString *sql = [[NSString alloc] initWithFormat:@"select * from UserInformation where Username='%@' and Password='%@'",loginName.text,password.text];        //[sql UTF8String];
        //NSLog(@"'%s'",[sql UTF8String]);
        sqlite3_stmt *statement;
            if (sqlite3_prepare_v2(database, [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  
                homepage *hvc = [[homepage alloc]initWithNibName: nil bundle: nil];
                hvc.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
                [self presentModalViewController:hvc animated: YES];

            }
            else {   
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Login Failed!!!"
                                                                message:@"Check your PId and Password" delegate:nil 
                                                      cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];

                }}            

        sqlite3_finalize(statement);

    }
    sqlite3_close(database);
}
-(IBAction)homePage: (id)sender
{
    [self checkindatabase];

} 

2 个答案:

答案 0 :(得分:1)

请按照您的要求找到代码。

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

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSLog(@"open");
        NSString *sql = [[NSString alloc] initWithFormat:@"select * from UserInformation where Username='%@' and Password='%@'",loginName.text,password.text];        //[sql UTF8String];
        //NSLog(@"'%s'",[sql UTF8String]);
        sqlite3_stmt *statement;
        if (sqlite3_prepare_v2(database, [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  
                return YES;
            }
        }            
        sqlite3_finalize(statement);
    }
    sqlite3_close(database);
    return NO;
}

-(IBAction)homePage: (id)sender
{
    if( [self checkindatabase] )
    {
        homepage *hvc = [[homepage alloc]initWithNibName: nil bundle: nil];
        hvc.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:hvc animated: YES];
        [hvc release];
    }
    else
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Login Failed!!!"
                                                        message:@"Check your PId and Password" delegate:nil 
                                              cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }

} 

答案 1 :(得分:0)

正如Aadhira所建议的那样......

使checkindatabase返回BOOL,如果登录成功则返回TRUE,否则返回FALSE

然后根据BOOL值导航到主页。

在执行IBAction方法时,您无法让其他功能导航视图。

编辑:

我不是在寻找您的数据库代码..我只是向您展示了如何使用BOOL返回值....如果您遇到任何错误,请提及错误。

-(BOOL)checkindatabase{

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


    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSLog(@"open");
        NSString *sql = [[NSString alloc] initWithFormat:@"select * from UserInformation where Username='%@' and Password='%@'",loginName.text,password.text];        //[sql UTF8String];
        //NSLog(@"'%s'",[sql UTF8String]);
        sqlite3_stmt *statement;
            if (sqlite3_prepare_v2(database, [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  
                flag = YES;

            }
            else {   
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Login Failed!!!"
                                                                message:@"Check your PId and Password" delegate:nil 
                                                      cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
                [alert release];
                flag = NO;

                }}            

        sqlite3_finalize(statement);

    }
    sqlite3_close(database);
    return flag;
}
-(IBAction)homePage: (id)sender
{
   BOOL newFlag = [self checkindatabase];
   if(newFlag)
   {
        homepage *hvc = [[homepage alloc]initWithNibName: nil bundle: nil]
        hvc.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:hvc animated: YES];
   }
}