我在android上编写代码。我尝试编写一个代码,从一列中获取数据并添加到另一列的字符串,为所有数据库执行此操作。
像这样:
在:
A column | B column
string 1 string 2
后:
A column | B column
string 1 string 2+string 1
我会尝试从列中获取字符串并更新列,但我无法做到。
Database.KEY_COLUMN1和Database.KEY_COLUMN2是列的名称(字符串类型)
SQLiteDatabase mydatabase = dbHelper.getMydatabase();
String query = new String( "select "+Database.KEY_COLUMN1+",
"+Database.KEY_COLUMN2'+ " from "+ Database.TABLE_NAME );
cursor = mydatabase.rawQuery(query,null);
while(cursor.moveToNext()) {
String column1 = cursor.getString(cursor.getColumnIndex(Database.KEY_COLUMN1));
String column2 = cursor.getString(cursor.getColumnIndex(Database.KEY_COLUMN2));
column2=column1+colum2;
mydatabase.execSQL("UPDATE "+Database.DATABASE_TABLE+" SET "
+ Database.KEY_COLUMN2+ " = "
+Datababese.KEY_COLUMN1+ " + " + Database.KEY_COLUMN2
+" WHERE "+Database.KEY_COLUMN2 + " = " +cursor.getColumnIndex(Database.KEY_COLUMN2));
}
cursor.close();
我更新了exceSQL,但它并没有写任何数据。
答案 0 :(得分:0)
UPDATE语句的问题在于没有WHERE子句的UPDATE会更新表中的所有行,因此您在所有行中都会得到相同的值。
如果您想逐个更新行,则必须读取每行的ID,并使用它来过滤UPDATE,如下所示:
UPDATE MyTable SET BColumn = 'newValue' WHERE ID = 123
无论如何,您可以简单地执行单个命令,为每行单独执行字符串连接:
UPDATE MyTable SET ArrayColumn = Column1 + Column2
或在Java中:
db.execSQL("UPDATE " + Database.DATABASE_TABLE +
" SET " + Database.KEY_ARRAY + " = " +
Database.KEY_COLUMN1 + " + " + Database.KEY_COLUMN2);