Andoirdアプリでデータベース更新を下記の様に SQLiteDatabase#execSQL で行っていて、エミュレータで動かしていた時は上手くいっていたのですが、実機で動かすと SQLException が発生しました。
val helper = MySQLiteOpenHelper(this)
val database = helper.writableDatabase
// 更新するSQL文
val sql = """
UPDATE sample_table
SET (age, sex) = (20, '男')
WHERE name = '太郎'"""
database.beginTransaction()
try {
database.execSQL(ngSql)
database.setTransactionSuccessful()
} catch (ex: SQLException) {
Log.e("SQLException", ex.message)
} finally {
database.endTransaction()
database.close()
}
SQLException: near "(": syntax error (code 1)
SQL文を下記の様に変更したところ実機でも動くようになりました。
val sql = """
UPDATE sample_table
SET age = 20,
sex = '男'
WHERE name = '太郎'"""
デバッグに使っていたエミュレータのAPIレベルは26(Android 8.0)、実機が24(Android 7.0)だったので他のAPIレベルでも試したところ、どうやらAPIレベル25以下では列と値それぞれを括弧でまとめて書くSQL文には対応していないみたいです。