以下是我写的SQLite表的声明语句;
db.execSQL("create table if not exists data( d text, hr integer, rrInterval real, acc_x real, acc_y real, acc_z real);");
这就是表data
的样子。
data{
d text,
hr integer,
rrInterval real,
acc_x real,
acc_y real,
acc_z real
}
我用Microsoft Band 2测量了一些变量,存储在以下变量中;我检查了所有这些变量,从MS Band获得了正确的数据。
String d;
int heartRate;
double rrInterval;
float acc_x, acc_y, acc_z;
所以这个用于将数据存储在SQLite数据库中。
MyOpenHelper helper = new MyOpenHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("create table if not exists data( d text, hr integer, rrInterval real, acc_x real, acc_y real, acc_z real);");
/* some other codes irrelevant to DB */
db.execSQL("insert into data(d, hr, rrInterval, acc_x, acc_y, acc_z) values ('" +
d + "', " + //date
Integer.toString(heartRate) + ", " + //hr
Double.toString(rrInterval)+ ", " + //rrInterval
Float.toString(acc_x) + ", " + //acc_x
Float.toString(acc_y) + ", " + //acc_y
Float.toString(acc_z) + //acc_z
");");
据我所知,Java和SQLite上都没有语法错误。但Android Studio会返回错误,而不是insert ...
语句。我怎样才能弄清楚如何解决这个问题?
答案 0 :(得分:1)
尝试使用ContentValues而不是使用这种方法更容易使用。
ContentValues cv = new ContentValues();
cv.put("d", DATA_NEEDED_TO_INSERT);
cv.put("hr", DATA_NEEDED_TO_INSERT);
cv.put("rrInterval", DATA_NEEDED_TO_INSERT);
cv.put("acc_x", DATA_NEEDED_TO_INSERT);
cv.put("acc_y", DATA_NEEDED_TO_INSERT);
cv.put("acc_z", DATA_NEEDED_TO_INSERT);
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_NAME, null, cv); // insert function
db.close(); // dont forget to close your db
别忘了db.close();在过程欢呼之后