ошибка выбора sqlite - PullRequest
       2

ошибка выбора sqlite

0 голосов
/ 18 августа 2011

Я получил этот код одним из моих методов. Он должен проверить, находится ли строка в базе данных, и обновлена ​​ли она в базе данных. Если его там нет, я ловлю исключение и просто создаю запись.

String s="hallo";

try {
   Cursor c1 = dba.fetchSubject(s);
   dba.updateSubject(c1.getLong(c1.getColumnIndex(DbAdapter.KEY_ROWID)), s, t, r);
} catch (SQLException e){
   dba.createSubject(s, t, r);
}

Проблема в том, что fetchSubject всегда вызывает исключение.

Я использую аналогичный метод для получения записи БД по rowId вместо String, которая работает:

public Cursor fetchSubject(long rowId) throws SQLException {
    Cursor mCursor = database.query(true, DATABASE_TABLE2, new String[] {
            KEY_ROWID, KEY_SUBJECT, KEY_TEACHER, KEY_ROOM}, KEY_ROWID 
            + "=" + rowId, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

Метод, вызываемый сверху:

public Cursor fetchSubject(String subject) throws SQLException {
    Cursor mCursor = database.query(true, DATABASE_TABLE2, new String[] {
            KEY_ROWID, KEY_SUBJECT, KEY_TEACHER, KEY_ROOM}, KEY_SUBJECT 
            + "=" + subject, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

Ошибка:

 sqlite returned: error code = 1, msg = no such column: hallo

Я не знаю, где моя ошибка. Разве нельзя использовать строку в параметре выбора?

1 Ответ

2 голосов
/ 18 августа 2011

Попробуйте добавить одинарные кавычки вокруг hallo

String s = "'hallo'";

По сути, вы делаете запрос: выберите бла-бла-бла в TABLE, где subject = hallo.Поскольку hallo не заключен в кавычки, он пытается найти переменную / столбец с таким именем.Когда мы окружаем его кавычками, мы говорим, что ищем строку внутри этих кавычек, а не переменную.

Думайте об этом как о нормальном программировании ..

String s = hallo; 

полностью отличается от

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