Java 使用SQLite进行数据收集
我对android和SQL很陌生。我正在制作一个应用程序,它可以从加速计获取数据,并将它们存储在SQLLite数据库中。之后我打算把数据库拿出来,这样我就可以绘制数据了。我有两个问题:Java 使用SQLite进行数据收集,java,android,database,sqlite,android-sdcard,Java,Android,Database,Sqlite,Android Sdcard,我对android和SQL很陌生。我正在制作一个应用程序,它可以从加速计获取数据,并将它们存储在SQLLite数据库中。之后我打算把数据库拿出来,这样我就可以绘制数据了。我有两个问题: 如何将数据保存为SD卡上的可用文件?我看过一些主题,但我没能从中得到任何东西去工作。我想我需要一些例子/教程 其次,经过一些收集后,应用程序开始滞后。我猜是存储方法,在DB类中是这样的: public long createEntry(float x, float y, float z, float t) { C
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);
}
我希望您能帮助我。对于问题的第一部分,在事务中执行所有插入操作应该会使它更快。为此,在开始插入之前,请调用以下代码:
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的同时将其流式输出到磁盘。第一部分确实很有帮助!大约在第二天。我应该把这个代码放在哪里?我是否应该在DBHelper类中将其作为方法,然后在每次需要将数据保存到文件时调用它?您可以将其放置在几乎任何位置,这取决于您的需要。不过,将它放在dbhelper中是有意义的,但我通常会将它放在单击按钮时。