将列逐行添加到另一列

时间:2014-10-20 14:37:18

标签: android sqlite

我在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,但它并没有写任何数据。

1 个答案:

答案 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);