android sql外观字符串数据
我想像这样附加字符串数据 姓名、身份证 应用程序,1 到 姓名、身份证 附加,1 但是下面的代码输出 V/姓名:0 身份证号码:1 尽管我将我的表更新为“name=name+‘ending’”,但它输出0。。。为什么?android sql外观字符串数据,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我想像这样附加字符串数据 姓名、身份证 应用程序,1 到 姓名、身份证 附加,1 但是下面的代码输出 V/姓名:0 身份证号码:1 尽管我将我的表更新为“name=name+‘ending’”,但它输出0。。。为什么? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("User", MODE_PRIVATE, null);
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS test (name VARCHAR(100), id INTEGER PRIMARY KEY)");
String sql = "INSERT INTO test (name, age) VALUES (?, ?)";
SQLiteStatement statement = sqLiteDatabase.compileStatement(sql);
statement.bindString(1, "app");
statement.execute();
String sql2 = "UPDATE test SET name = name + ? WHERE id = ?";
statement = sqLiteDatabase.compileStatement(sql2);
statement.bindString(1, "ending");
statement.bindLong(2, 1);
statement.execute();
Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM test", null);
int nameIndex = c.getColumnIndex("name");
int idIndex = c.getColumnIndex("id");
c.moveToFirst();
do {
Log.v("name", c.getString(nameIndex));
Log.v("id", c.getString(idIndex));
} while (c.moveToNext());
sqLiteDatabase.execSQL("DELETE FROM test");
}
SQLite中的字符串连接运算符是
|
,而不是+
,因此您应该使用以下更新查询:
String sql2 = "UPDATE test SET name = name || ? WHERE id = ?";
其他一些数据库使用+
进行字符串连接(例如SQL Server);也许这就是你的用法的来源