我目前正在尝试学习Java,因此我开始创建一个需要SQLite的Android应用程序。一切似乎都运行良好,但我似乎无法使更新声明起作用。
我有一个.java文件,其中包含以:
开头的所有SQLite语句public static final String KEY_ROWID = "_id";
public static final String KEY_TASK1 = "Content";
public static final String KEY_TASK2 = "Name";
public static final String KEY_TASK3 = "Stack";
public static final String DATABASE_NAME = "DBName";
public static final String DATABASE_TABLE = "Table";
public static final int DATABASE_VERSION = 10;
private static final String DATABASE_CREATE_SQL =
"CREATE TABLE " + DATABASE_TABLE
+ " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_TASK1 + " Varchar UNIQUE, "
+ KEY_TASK2 + " TEXT NOT NULL, "
+ KEY_TASK3 + " INTEGER"
+ ");";
这是我在我的应用程序中调用的更新:
public boolean updateRow(Integer task1, Integer task3) {
String where = KEY_TASK1 + "=" + task1;
ContentValues newValues = new ContentValues();
newValues.put(KEY_TASK3, task3);
// Insert it into the database.
return db.update(DATABASE_TABLE, newValues, where, null) != 0;
}
在我的主.java文件中,我打电话:
private void ScanOutItem (View view){
myDb.updateRow("5741000124024", 2);
}
我已绑定到我的应用程序中的按钮。 正如我在开始时所说,这是我第一次申请,所以我不能保证它是完美的。但是,如果我错过了某些内容,或者您可以看到错误,请告诉我们。我觉得我已经尝试了所有的东西,所以任何帮助都会受到赞赏。
我使用了我在youtube上看到的指南,但是我根据指南对它进行了一些更改,这些指南并不适合我的应用。
答案 0 :(得分:0)
尝试db.update(DATABASE_TABLE, newValues, KEY_TASK1+"=?", new String[]{task1});
或db.execSQL("UPDATE "+DATABASE_TABLE+" SET "+KEY_TASK3+"="+task3+" WHERE "+KEY_TASK1+"="+task1);
如果上面没有任何效果,请尝试更新updateRow
这样的方法
public boolean updateRow(Integer task1, Integer task3) {
String where = KEY_TASK1 + "=" + task1;
ContentValues newValues = new ContentValues();
newValues.put(KEY_TASK3, task3);
SQLiteDatabase db1 = this.getWritableDatabase();
// Insert it into the database.
return db.update(DATABASE_TABLE, newValues, KEY_TASK1+"=?", new String[]{task1}) != 0;
}
<强>更新强>
而不是在xml中设置onClick:
,而是像这样从
Button myButton = (Button) findViewById(R.id.myButtonId);
myButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//call update method here
}
});