错误:没有这样的列名

时间:2013-01-08 07:22:33

标签: android sqlite android-sqlite

我一直在尝试执行查询: -

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';

logcat说: -

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和密码。导致: -

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

但是,在SQLITE数据浏览器中执行时,这两个查询都能正常工作。 两者都回答相同的错误。

4 个答案:

答案 0 :(得分:0)

像这样重写

String selectQuery="SELECT "+ROLE+" FROM TABLE_EMPLOYEE " WHERE USER_ID ='" + userId + "' AND PASSWORD = '" +password+ "'";

答案 1 :(得分:0)

您的logcat显示如下。

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

User_Id=HondaQE AND Password=123中的字符串周围没有单引号。

答案 2 :(得分:0)

您没有正确编译原始查询。我建议你改用“查询”,并使用选择参数来避免这些错误和可能的SQL注入。

答案 3 :(得分:0)

我在访问游标之前关闭了数据库。这是错误。 访问游标后,将关闭数据库。错误解决了。