Android 在sqlite中更改列中的值
我需要更新某个表中列中的值。我试过这个:Android 在sqlite中更改列中的值,android,sqlite,Android,Sqlite,我需要更新某个表中列中的值。我试过这个: public void updateOneColumn(String TABLE_NAME, String Column, String rowId, String ColumnName, String newValue){ String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = "+newValue+" WHERE "+Column+ " = "+ro
public void updateOneColumn(String TABLE_NAME, String Column, String rowId, String ColumnName, String newValue){
String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = "+newValue+" WHERE "+Column+ " = "+rowId;
db.beginTransaction();
SQLiteStatement stmt = db.compileStatement(sql);
try{
stmt.execute();
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
}
我这样称呼这个方法:
db.updateOneColumn("roadmap", "id_roadmap",id,"sys_roadmap_status_mobile_id", "1");
这意味着当id\u roadmap=id时,我想在sys\u roadmap\u status\u mobile\u id
列中设置值1
。
问题是什么也没发生。我的错在哪里 简易解决方案:
String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = '"+newValue+"' WHERE "+Column+ " = "+rowId;
ContentValues cv = new ContentValues();
cv.put(ColumnName, newValue);
db.update(TABLE_NAME, cv, Column + "= ?", new String[] {rowId});
更好的解决方案:
String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = '"+newValue+"' WHERE "+Column+ " = "+rowId;
ContentValues cv = new ContentValues();
cv.put(ColumnName, newValue);
db.update(TABLE_NAME, cv, Column + "= ?", new String[] {rowId});
以下解决方案适用于我更新单行值:
公共长文件已下载(字符串文件名)
{
SQLiteDatabase db=this.getWritableDatabase();
长id=0;
试一试{
ContentValues cv=新的ContentValues();
cv.put(如果D_已下载,则为1);
//WHERE子句的列
字符串选择=(IFD_文件名+“=?”);
//WHERE子句的值
String[]selectionArgs={String.valueOf(insorfiledownload.fileName)};
id=db.update(表\u吸入器\u文件\u下载、简历、选择、选择);
}
捕获(例外e){
e、 printStackTrace();
}
返回id;
}
首先,请仔细阅读SQL注入攻击!您的列是什么数据类型?如果它们是字符类型,您可能需要引用字符串。您还没有提供id包含的值或任何示例数据…我以前尝试过此解决方案,但表中未设置该值。@Gabrielle查看它是否真的影响任何行。检查受影响的行数我的行数与调用update之前的行数相同。没有什么是可以影响的。所有列都是字符串。@WarrenFaith我从data/data/获取数据库并打开它。上面的更新方法运行时返回什么值?