Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在sqlite中更改列中的值_Android_Sqlite - Fatal编程技术网

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/获取数据库并打开它。上面的更新方法运行时返回什么值?