我需要使列等于表中的另一列。我无法使用SQLiteDatabase的更新方法来解决这个问题。
我知道SQL语句是:
UPDATE coolTable SET columnA = columnB;
我把它放在ContentValues中我传递了函数吗?还是选择字符串?
答案 0 :(得分:1)
您只能使用update()
来设置文字值(作为绑定参数),而不是sqlite SQL syntax支持的任何其他类型的表达式。
使用execSQL()
以列名表达式执行原始UPDATE
查询。
答案 1 :(得分:0)
execSQL()
错误检查:
SQLiteDatabase db = getReadableDatabase();
try {
long count = DatabaseUtils.queryNumEntries(db, "pweb");
db.execSQL("update pweb set h_id = _id;");
long rows = DatabaseUtils.longForQuery(db, "SELECT changes()", null);
if(count != rows ) Log.e("wrong count","update failed");
}
catch(SQLException e){
Log.e("SQLException","update failed");
}
db.close();
但我想知道是否可以使用数据库的更新() 函数而不是execSQL()
您可以使用sqlite3
查看和操作数据,并测试sql
命令。
创建一个表格:
CREATE TABLE pweb (_id INTEGER PRIMARY KEY,h_id INTEGER ,sent INTEGER);
查看原始行:
sqlite> select * from pweb;
1|10|1
2|20|1
3|30|0
4|40|0
执行列更新:
sqlite> update pweb set h_id = _id;
查看对所有行的更改:
sqlite> select * from pweb;
1|1|1
2|2|1
3|3|0
4|4|0
更复杂的东西?
sqlite> update pweb set h_id = _id + 1;
结果:
sqlite> select * from pweb;
1|2|1
2|3|1
3|4|0
4|5|0