У меня возникла проблема с добавлением подкатегорий, я хочу, например, как описано в приведенной ниже таблице, написать метод в android, который принимает родительский идентификатор, который является идентификатором Animal и помещает это в столбце parentid doggie.Ошибка при попытке обновить базу данных в android sqlite
| id | parentid | name |
-----------------------------------------
| 1 | null | animal |
| 2 | null |vegetable |
| 3 | 1 | doggie |
| 4 | 2 | carrot |
| | | |
| | | |
это мой запрос, чтобы создать таблицу в андроида:
private static final String CREATE_TABLE_CATEGORIES="CREATE TABLE "+TABLE_CATEGORIES+"(id INTEGER PRIMARY KEY AUTOINCREMENT,"+category_name+
" TEXT,parentid INTEGER null,foreign key (parentid) references "+TABLE_CATEGORIES+" (id));";
затем:
public void onCreate(SQLiteDatabase db){
//Creation required tables
db.execSQL(CREATE_TABLE_CATEGORIES);
}
........... .... ....... ...........
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
// on upgrade drop older tables
db.execSQL("PRAGMA foreign_keys = ON;");
db.execSQL("DROP TABLE IF EXISTS " + CREATE_TABLE_CATEGORIES);
// create new table
onCreate(db);
}
Теперь я хочу связать дочернюю категорию с родительской категорией, используя обновление.
public void AddSubCategory(Categories parent,Categories child){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(String.valueOf(child.getParentid()),parent.getId());
db.update(TABLE_CATEGORIES,values,KEY_ID + " = ?",new String[] {String.valueOf(child.getId())});
}
Ошибка:
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: near "0": syntax error (code 1): , while compiling: UPDATE Categories SET 0=? WHERE id = ?
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
Но как насчет метода String.valueof(), он не возвращает строку? – TheGreenGoblen
Есть ли способ преобразования возвращенного int getParentid() в String? – TheGreenGoblen
Да, это 'String', но строка не представляет собой имя столбца. – laalto