#java #android
#java #Android
Вопрос:
Я получаю эту ошибку logcat:
Вызвано: android.database.sqlite.Исключение SQLiteException: нет такого столбца: id (код 1): , при компиляции: ВЫБЕРИТЕ * Из заметок, ГДЕ id = 0
Это мой код:
public static final String dbName="notesDb";
public static final Integer DB_version=1;
public static final String key_id="id";
public static final String key_title="title";
public static final String key_subject="subject";
public static final String Table_notes="notes";
общедоступные примечания к базе данных (контекст context) {
супер (контекст, dbName, null, DB_version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String create_table="create table " Table_notes "(" key_id "Integer primary key," key_title " varchar(30), " key_subject " varchar(50)) ";
db.execSQL(create_table);
}
public Note getNoteByID(int id){
Note note=null;
SQLiteDatabase db=this.getReadableDatabase();
String selectQuery="SELECT * FROM " Table_notes " WHERE " key_id "=" id;
Cursor cursor=db.rawQuery(selectQuery,null);
if (cursor.moveToFirst()){
String title=cursor.getString(cursor.getColumnIndex(key_title));
String subject=cursor.getString(cursor.getColumnIndex(key_subject));
int id_item=cursor.getInt(cursor.getColumnIndex(key_id));
note=new Note(title,subject,id_item);
}
cursor.close();
return note;
}
Как я могу это решить?
Комментарии:
1. Какая часть ошибки вас смущает? В таблице
notes
нет столбца с именемid
.2. public void onCreate (база данных SQLiteDatabase db) { String create_table=»create table » Table_notes «(» key_id «Целочисленный первичный ключ», key_title » varchar(30)», key_subject «varchar(50))»; db.ExecSQL(create_table); } Есть ли ошибка в методе create?
3. Как я уже сказал, в таблице нет столбца с именем
id
. Поскольку вы пропускаете пробел междуid
иInteger
, у вас есть столбец с именемidInteger
без объявленного типа. Проголосовали за закрытие, поскольку проблема вызвана простой типографской ошибкой.
Ответ №1:
Ошибка в вашем Create
запросе, вам необходимо указать соответствующий пробел после имени столбца.
"create table " Table_notes "(" key_id " Integer primary key," // you missed space before Integer
Таким образом, sqlite создаст ваш столбец с именем idInteger
, а не id
без него, вы можете попробовать использовать запрос select, сославшись на id
столбец как idInteger
.
Комментарии:
1. Я получил ту же ошибку после добавления пробела (нет такого столбца: id (код 1): , при компиляции: ВЫБЕРИТЕ * ИЗ заметок, ГДЕ id = 0)