我在android和SQL方面很新。我正在制作一个应用程序,它可以从加速度计中获取数据,我正在将它们存储在SQLLite数据库中。之后,我打算取出数据库,这样我就可以绘制数据。我有两个问题:
公共长createEntry(浮点数x,浮点数y,浮点数z,浮点数t) { ContentValues cv =新的ContentValues();cv.put(X_DATA,x);cv.put(Y_DATA,y);cv.put(Z_DATA,z);cv.put(TIME_DATA,t);返回ourDatabase.insert(DATABASE_TABLE,null,cv);}
希望你能帮我。
发布于 2012-04-16 09:25:48
对于问题的第一部分,执行事务中的所有插入应该会使它更快。为此,在开始插入之前,请调用以下代码:
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流到磁盘上。
https://stackoverflow.com/questions/10178322
复制