我的插入代码如下所示
public void insertInTable(float x, float y, float z, int timestamp){
try {
ContentValues values = new ContentValues();
values.put("x_val", x);
values.put("y_val", y);
values.put("z_val", z);
values.put("timestamp", timestamp);
db.insertOrThrow(DBHelper.tableName, null, values);
Log.d(Constants.CUSTOM_LOG_TYPE, "Inserted successfully");
}
catch (SQLiteException e) {
Log.d(Constants.CUSTOM_LOG_TYPE, e.getMessage());
e.printStackTrace();
}
}
从以下代码中调用它:
@Override
public void onSensorChanged(SensorEvent event) {
...values retrieved from event ....
...the inserted into db
if (conditions met) {
//****here the data is inserted****
dbHelper.insertInTable(x, y, z, (int) timeInMillis);
}
}
此代码在数据库中正确插入数据,并在导出db文件时,插入的数据存在。
我的问题是如果没有提交交易,数据如何导出?
我试着查看[insertOrThrow](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertOrThrow(java.lang.String,java.lang.String,android.content.ContentValues))的文档,但它没有提到任何关于自动提交的内容。
autocommit设置为false,我知道因为当我尝试使用execSQL()插入时,如果没有显式提交事务,则不会导出数据。
没有使用transaction,commit甚至setAutocommit(true)。 代码是如何工作的?我在这里错过了什么吗?
答案 0 :(得分:0)
除了在事务中,不能对数据库进行任何更改。更改数据库的任何命令(基本上,除SELECT之外的任何SQL命令)将自动启动事务(如果尚未生效)。最后一个查询完成后,将提交自动启动的事务。