我对android和SQL很新。我正在创建一个应用程序,它可以从加速度计获取数据,我将它们存储在SQLLite数据库中。之后我打算把数据库拿出来,这样我可以绘制数据。我有两个问题:
如何将数据保存为SD卡上的可用文件?我已经看过一些话题,但是我无法让它发挥作用。我想我需要一些示例/教程。
其次,经过一些收集,应用程序开始滞后。我想这是存储方法,在DB-class中是这样的:
public long createEntry(float x, float y, float z, float t) {
ContentValues cv = new ContentValues();
cv.put(X_DATA,x);
cv.put(Y_DATA,y);
cv.put(Z_DATA,z);
cv.put(TIME_DATA,t);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
我希望你能帮助我。
答案 0 :(得分:0)
对于问题的第一部分,在事务中执行所有插入操作应该会更快。为此,在开始插入之前,请调用以下代码:
ourDatabase.beginTransaction()
然后,一旦完成数据插入,请致电:
ourDatabase.setTransactionSuccessful();
ourDatabase.getDb().endTransaction();
要回答问题的第二部分,您需要从数据库中检索数据并从中创建CSV文件:
StringBuilder csv = new StringBuilder();
Cursor cursor = this.db.query("Data", new String[] { "x","y", "z", "t" }, null, null, null, null, null);
while (cursor.moveToNext()) {
csv.append(cursor.getFloat(0))
.append(",")
.append(cursor.getFloat(1))
.append(",")
.append(cursor.getFloat(2))
.append(",")
.append(cursor.getFloat(3))
.append("\n");
}
cursor.close();
File outputFile = new File("/sdcard/mycsv.csv");
FileWriter writer;
try {
writer = new FileWriter(outputFile);
writer.write(csv.toString());
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果您正在收集大量行(可能是数万个),则可能需要在写入此文件的同时将此CSV流式传输到磁盘。