尝试在android sqlite中更新数据库时出错

时间:2014-08-29 10:39:01

标签: java android sqlite

我在添加子类别方面存在问题,我希望例如如下表所示,在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)

2 个答案:

答案 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())});