0

私はクエリを実行しようとしています:-

String selectQuery="SELECT "+ROLE+" FROM "+TABLE_EMPLOYEE+ " WHERE "+USER_ID+ "='"+userId+"' AND "+PASSWORD+"='"+password+"';";
cursorObj = dbObj.rawQuery(selectQuery, null);

これにより、次のようになります。-

SELECT Role FROM employee WHERE User_Id='HondaSE' AND Password='456';

ログキャットは言う:-

01-08 12:05:10.070: W/System.err(9318): android.database.sqlite.SQLiteException: no such column:
 HondaQE: , while compiling: SELECT Role FROM employee WHERE User_Id=HondaQE AND Password=123;

userIdとpasswordについても、二重引用符でクエリを実行しようとしました。その結果:-

SELECT Role FROM employee WHERE User_Id="HondaSE" AND Password="456";

ただし、SQLITEデータブラウザで実行すると、両方のクエリは完全に正常に機能します。どちらも同じエラーで応答します。

4

4 に答える 4

0

このように書き直してください

String selectQuery="SELECT "+ROLE+" FROM TABLE_EMPLOYEE " WHERE USER_ID ='" + userId + "' AND PASSWORD = '" +password+ "'";
于 2013-01-08T07:26:36.620 に答える
0

logcatは次のように表示されます。

while compiling: SELECT Role FROM employee WHERE User_Id=HondaQE AND Password=123;

の文字列を一重引用符で囲むことはありませんUser_Id=HondaQE AND Password=123

于 2013-01-08T07:27:04.787 に答える
0

生のクエリを正しくコンパイルしていませんでした。代わりに「クエリ」を使用し、選択引数を使用して、これらの間違いやSQLインジェクションの可能性を回避することをお勧めします。

于 2013-01-08T07:28:40.843 に答える
0

カーソルにアクセスする前にデータベースを閉じました。これがエラーでした。カーソルにアクセスした後、データベースを閉じます。エラーが解決しました。

于 2013-01-09T09:07:15.157 に答える