2012-01-26 148 views
0

这件事对我来说真的很奇怪我创建了一个应用程序,在我的第一个视图(登录视图)中输入了电子邮件ID和密码,然后从数据库验证了这一点,如果确定,则移至新视图并在这个观点我填写一些字段,然后输入数据到数据库,但它硝基甲苯中输入数据到我的数据库。这login视图插入数据库问题

-(NSInteger)verifyLoginEmail:(NSString *)email Password:(NSString *)password 
{ 
     NSInteger a=1; 
     const char *selectQuery="SELECT * FROM CreateProfile where email=? AND password=?"; 
     sqlite3_stmt *statement; 
     if(sqlite3_open([destPath UTF8String],&studentDB)==SQLITE_OK) 
     { 
      //sqlite3_bind_int(statement, 1, sid); 

      if(sqlite3_prepare_v2(studentDB,selectQuery, -1, &statement, nil)==SQLITE_OK) 
      { 
      sqlite3_bind_text(statement, 1, [email UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 2, [password UTF8String], -1, SQLITE_TRANSIENT); 

       if(sqlite3_step(statement)==SQLITE_ROW) 
       { 

        return a; 
       } 
       else 
       { 
        return 2; 
       } 

      } 
         sqlite3_finalize(statement); 
     } 
      sqlite3_close(studentDB); 


     return 0; 
} 

的核查和验证码是插入数据来自新视图

-(void)insertName:(NSString *)name Email:(NSString *)email Password:(NSString *)password Pic:(NSString *)pic; 
{ 
    const char *insertQuery="insert into CreateProfile (name,email,pic,password) values (?,?,?,?)"; 
    sqlite3_stmt *statement; 
    if(sqlite3_open([destPath UTF8String],&studentDB)==SQLITE_OK) 
    { 

     if(sqlite3_prepare_v2(studentDB, insertQuery, -1, &statement, nil)==SQLITE_OK) 
     { 
      sqlite3_bind_text(statement, 1, [name UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 2, [email UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 3, [pic UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 4, [password UTF8String], -1, SQLITE_TRANSIENT); 
      //sqlite3_bind_int(statement, 2, rollno); 


     } 
     if(sqlite3_step(statement)==SQLITE_DONE){ 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Profile Created" message:@"Your profile successfully added" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
     } 
      sqlite3_finalize(statement); 
     } 
     sqlite3_close(studentDB); 

    } 

当我直接从主窗口更改视图来查看时,我可以输入字段数据库,但我不能进入数据库,当我登录,然后移动到新的视图

+0

在你的代码中插入'NSLog'语句并检查你的sqlite函数的结果。 – Mundi

+0

图片意味着图片? – Hector

+0

你也可以考虑使用Gus Mueller的FMDB(https://github.com/ccgus/fmdb),这是一个很好的围绕sqlite的Obj-C包装器。如果它是图像而不是更改数据类型,则为 –

回答

0

在你(NSInteger的)verifyLoginEmail:(的NSString *)电子邮件密码:(的NSString *)密码 funcation

你已经写

sqlite3_bind_text(statement, 1, [email UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 2, [password UTF8String], -1, SQLITE_TRANSIENT); 

替换这两条线与线下面

sqlite3_bind_text(statement, 0, [email UTF8String], -1, SQLITE_TRANSIENT); 
      sqlite3_bind_text(statement, 1, [password UTF8String], -1, SQLITE_TRANSIENT); 

所示。在选择查询的结合星ts从0开始。而在INSERT语句从1

,而不是返回一个和结合开始,返回像一些整数值,因为你的方法的返回类型是NSInteger的。

希望它能起作用。