sqlite3 を使用してログイン資格情報を保存する iphone アプリケーションのログイン画面を作成しようとしています。
以下は、認証を処理するために使用している関数です。
-(void) enter
{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &DBLogin) == SQLITE_OK)
{
NSLog(@"Connected to Database");
NSString *querySQL = [NSString stringWithFormat:@"SELECT id FROM User WHERE id=\"%@\"",login.text];
NSString *s = password.text;
const char *query_stmt = [querySQL UTF8String];
NSLog(@"String is %s",query_stmt);
NSLog(@"Pass is %@",s);
if (sqlite3_prepare_v2(DBLogin,query_stmt, -1, &statement, NULL) ==!SQLITE_NULL)
{
NSLog(@"Executed Correctly");
querySQL = [NSString stringWithFormat:@"SELECT password FROM User WHERE password=\"%@\"",password.text];
query_stmt = [querySQL UTF8String];
const char *f= [login.text UTF8String];
NSLog(@"String is %s",query_stmt);
NSLog(@"Pass is %@",s);
// const char *l = [login.text UTF8String];
// sqlite3_bind_text(statement, 1, query_stmt, -1, SQLITE_STATIC);
if (sqlite3_prepare_v2(DBLogin,query_stmt, -1, &statement, NULL) == !SQLITE_NULL)
{
if(sqlite3_bind_text(statement, 1,f , -1, SQLITE_STATIC))
status.text= @"Congratulations";
}
else
{
NSLog(@"error");
}
}
else
{
NSLog(@"Failed");
status.text =@"ERROR!";
}
}
}
そして、これはデータベースの私のスキーマです:
CREATE TABLE User (id varchar(20) PRIMARY KEY, password varchar(20));
login.text
orの詳細を渡す方法に問題があると思いますpassword.text
。それによるとNSLog
、正しい値を渡しますが、それが正しい入力であるかどうかのチェックに失敗しているようです。status.text = Congratulations
何を入力しても、すべてが適切であると考えているようです。
これを修正する方法がわかりません。私が得られる助けをいただければ幸いです。必要に応じて、さらに情報を提供できます。前もって感謝します!