Я получил этот код одним из моих методов. Он должен проверить, находится ли строка в базе данных, и обновлена ли она в базе данных. Если его там нет, я ловлю исключение и просто создаю запись.
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
Я не знаю, где моя ошибка. Разве нельзя использовать строку в параметре выбора?