SQLite插入包装在一个事务中:没有速度改进

我多次阅读,为了改进SQLite插入操作,它们必须被封装到一个事务中。 这就是我在我的例子中所做的:我有3个“String”,“long”和“int”的列表。 我打开数据库并使用以下代码编译语句:

mDb = mDataDB.getWritableDatabase();

String INSERT_QUERY = "INSERT INTO "+ mDataDB.TABLE_SENSORS_DATA + " (" + 
mDataDB.COLUMN_SENSOR_ID +", " + mDataDB.COLUMN_TIME_STAMP + ", " + 
mDataDB.COLUMN_PRESSURE + ")" +" VALUES(?,?,?);";

statement = mDb.compileStatement(INSERT_QUERY);

然后我开始交易:

mDb.beginTransaction();

我用一个循环来写入从列表中添加数据:

    Iterator timeCursor = timeStamps.iterator();
    Iterator dataCursor = data.iterator();
    for(int i =0; i < dataCount; i++){
        CurrentSensor.dataDAO.addData(sensor_id, (long)timeCursor.next(), (int) dataCursor.next());
        Log.i("data iteration " + i,"data added to the db");
    }

addData的代码是:

        try {
            statement.clearBindings();
            statement.bindString(1, sensor_id);
            statement.bindLong(2, time_stamp);
            statement.bindLong(3, (long) pressure);// I can't bind integer ?!
            statement.execute();
        }catch(Exception e) {
        e.printStackTrace();
    }

最后我终止了交易。 不过,插入的时间非常长(每行大约10ms,而且我有成千上万...)。 事情是我以前使用SQlite的基本“插入”功能,并且持续时间相同。 会有人有建议吗?

链接地址: http://www.djcxy.com/p/19823.html

上一篇: SQLite inserts wrapped in one transaction: no speed improvement

下一篇: slow SQLite read speed (100 records a second)