我在添加子类别方面存在问题,我希望例如如下表所示,在android中编写一个方法,该方法采用父ID,它是Animal的id,并将其放在doggie的列parentid中。 / p>
| id | parentid | name |
-----------------------------------------
| 1 | null | animal |
| 2 | null |vegetable |
| 3 | 1 | doggie |
| 4 | 2 | carrot |
| | | |
| | | |
这是我在android中创建表的查询:
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)
答案 0 :(得分:1)
ContentValues
put()
的第一个参数应该是"parentid"
之类的列名,而不是0
返回的child.getParentid()
之类的数字。
答案 1 :(得分:0)
您的更新声明应为:
values.put( “parentId的”,parent.getId()); db.update(TABLE_CATEGORIES,values,KEY_ID +“=?”,new String [{String.valueOf(child.getId())});