2011-08-05 2 views
2

iphoneアプリケーションプログラミングの初心者です。私はデータベースで動作するログインプログラムを開発しようとしていました。 "Userid"、 "Passwd"、 "Name"(3つのタイプはすべて 'VARCHAR'型)の列を持つ表emplopyeeを使用しています...私のプログラムでは、2つのテキストフィールド "username"と "password"を追加しました。私は "username"と "password"の値を取得し、( 'NSString'の)2つのグローバルオブジェクトに格納しました。 今、私は上記の理由のために使用さ コーディング部分はここ..です与えられた「ユーザーID」と「いるパスワード」と一致する「名前」を選択したいと思います:テーブル行を選択し、Sqliteで2つの列制約を照合するクエリは何ですか?

sqlite3 *dB; 
sqlite3_stmt *compiledStatement; 
if(sqlite3_open([databasePath UTF8String], &dB)==SQLITE_OK){ 
    const char *sql="Select Name from employee Where Userid=? , Passwd=?"; 

      if(sqlite3_prepare_v2(dB, sql, -1, &compiledStatement, NULL)!=SQLITE_OK) 
    NSAssert1(0,@"Error while reading Employee Name -->%s',sqlite3_errmsg(dB)); 
} 
sqlite3_bind_text(compiledStatement,1,[txt UTF8String],-1,SQLITE_TRANSIENT); 
    /*txt and txt1 are the global objects i told about they have the values of Userid and Passwd from the texxt fields respectively*/ 
sqlite3_bind_text(compiledStatement,2,[txt1 UTF8String],-1,SQLITE_TRANSIENT); 


if(SQLITE_DONE != sqlite3_step(compiledStatement)) 
txt3 =[[NSString alloc] initWithUTF8String:(char*)sqlite3_column_text(compiledStatement,0)]; 


else 
    NSAssert1(0, @"Error while getting the username '%s'", sqlite3_errmsg(dB));   
    sqlite3_reset(compiledStatement); 

そのエラーの無料ながら、コンパイルしてもアプリケーションがうまくいかない場合、実行時のクエリのエラーが表示されます... 私と一緒に裸にしてください...新しいデータがありますか?コードは... をu

ありがとうちょっと私はここでエラーの詳細を追加しました: 私は選択クエリに「」(カンマ)を使用する場合は、このエラーが発生します。 *キャッチされない例外により「NSInternalInconsistencyException」、理由にアプリを終了:「エラー従業員名を読みながら - >」の近くに「」:構文エラー」 '

と私は 『AND』で使用する場合は、このいずれかが発生します選択クエリ:「ユーザー名を取得中にエラー 『ではないエラー』」

答えて

6

まず問題:WHERE句SQLで

をキャッチされない例外により「NSInternalInconsistencyException」、理由にアプリを終了 * 、もしあなたがそれらを結合するために、カンマ使用する真AND、ではないことが必要でしょう:それはそれではない場合

SELECT Name FROM employee WHERE Userid=? AND Passwd=? 

、あなたの質問にあなたの実行時エラーメッセージの詳細を編集示唆しています。

参考のため、SQL As Understood By SQLiteを参照してください。

第二の問題は: - メッセージ「はエラー」手掛かりがあるあなたは間違ってのみ「成功」としての機能のsqlite3_step()からの戻りコードSQLITE_DONEを処理しているよう

に見えます。おそらくvalue returned might be SQLITE_ROW - クエリが成功したことを示し、読み込むデータがあるとしますか?

+1

お返事ありがとうございます。それを変更してみてください。すぐにランタイムエラーが更新されます。 –

+1

今すぐチェック!私はエラーを追加しました... –

+0

@ Vvk12 - あなたの新しい問題のために更新されました –

0

WHERE条件では、比較する複数のパラメータがある場合、コンマ(、)を追加できません。クエリは、 "スタート"

私たちは、コンマ複数のANDのではなく、追加することができ、 "image_status = 0 AND image_idは= 112とのimage_type =タイプimages SELECT * FROM" @ @ = NSStringの*タイプのようにする必要があります選択します。

関連する問題