нет такого столбца: хей (код 1 SQLITE_ERROR [1]): при компиляции: SELECT ID FROM ALLWORKHOURS, ГДЕ NOTEMEMOS = хей - PullRequest
0 голосов
/ 18 февраля 2020

Log Cat:

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) }

У меня есть имя столбца hey в моей базе данных Изображение базы данных

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

Способ, которым вы объединяете параметр note, создает sql оператор:

SELECT ID FROM ALLWORKHOURS WHERE NOTEMEMOS = hey

, поэтому 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;

Таким образом, вы не будете беспокоиться о одинарных кавычках, поскольку об этом позаботится rawQuery(). Я полагаю, вы хотите вернуть объект Cursor, а не строку запроса sql, верно?

0 голосов
/ 18 февраля 2020

Ваша терминология запутана.

hey - это значение, 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;
0 голосов
/ 18 февраля 2020

Ваш запрос должен выглядеть следующим образом

SELECT ID FROM ALLWORKHOURS WHERE NOTEMEMOS = 'hey'

Дайте мне знать, если это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...