日志猫:
no such column: hey (code 1 SQLITE_ERROR[1]): , while compiling: SELECT ID FROM ALLWORKHOURS WHERE NOTEMEMOS = hey
代码:
102) public String getID(String note){
103) SQLiteDatabase db = this.getWritableDatabase();
104) String query = ("SELECT " + COL_0 + " FROM " + TABLE_NAME + " WHERE " + COL_5 + " = " + note);
105) db.rawQuery(query,null);
106) return query;
107) }
我的数据库中确实有一个列名嘿Database Picture
您的查询应该看起来像这样
SELECT ID FROM ALLWORKHOURS WHERE NOTEMEMOS = 'hey'
让我知道是否有帮助
连接参数note
的方式创建此sql语句:
SELECT ID FROM ALLWORKHOURS WHERE NOTEMEMOS = hey
so hey
被认为是列标识符,而不是字符串文字,因为它没有包含在单引号内。您可以改为:
String query = "SELECT " + COL_0 + " FROM " + TABLE_NAME + " WHERE " + COL_5 + " = '" + note + "'";
它会起作用。但是建议的方法是像这样将参数作为字符串数组传递:
String query = "SELECT " + COL_0 + " FROM " + TABLE_NAME + " WHERE " + COL_5 + " = ?";
Cursor cursor = db.rawQuery(query, new String[] {note});
return cursor;
我想您想返回Cursor
对象而不是sql查询字符串,对吧?
您的术语感到困惑。
嘿是一个值,NOTEMEMOS是一列。
您需要引用值hey,以使SQL编译器知道它是字符串值,而不是您要与之比较的列。
String query = ("SELECT " + COL_0 + " FROM " + TABLE_NAME + " WHERE " + COL_5 + " = '" + note + "'");
请注意,使用参数化查询会更好,因为使用原始值是不安全的(请参阅SQL注入)。>
String query = ("SELECT " + COL_0 + " FROM " + TABLE_NAME + " WHERE " + COL_5 + " = ?"); // That's right, quotes aren't needed for a parameterized query.
String result = "";
Cursor cursor = db.rawQuery(query,new String[] {note} );
if (cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(COL_0));
}
cursor.close();
return result;