我试图将数组中的值插入到SQLite数据库中。
问题是该函数只能插入null
值,即使该数组不包含这些值。
插入功能:
public void addArrayEntry(String [] response){
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//System.out.println(response.length);
for (int i=1; i<response.length; i++){
values.put(temperature,response[i]);
db.insert(tableStatistics,null,values);
}
db.close();
}
catch (Exception e){
Log.e("Error in insert", e.toString());
}
}
String createTable = "CREATE TABLE statistics ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"temperature REAL, "+
"light INTEGER, "+
"humidity INTEGER)";
数组值:
05-08 14:24:21.405 10720-10720/org.security.andreiism.iotsecurity I/System.out﹕ 23.798828125
05-08 14:24:21.405 10720-10720/org.security.andreiism.iotsecurity I/System.out﹕ 744
05-08 14:24:21.405 10720-10720/org.security.andreiism.iotsecurity I/System.out﹕ 424
答案 0 :(得分:0)
在for循环之外写下db.insert
。所以values
只被插入一次。你所做的是第一次插入值,值为1.在插入的第二次插入1和2.在第三次插入1,2和3.现在你的表将如下所示:
id| temperature
1 |1
2 |1
3 |2
4 |1
5 |2
6 |3
这是因为您在values
循环之外定义了for
,并将值添加到ArrayList
。但这不会被删除,直到下一个循环运行。因此,新值将仅添加到values
之前,并且所有值将一起添加到列表中。
所以你的方法应该是这样的:
public void addArrayEntry(String [] response){
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//System.out.println(response.length);
for (int i=1; i<response.length; i++){
values.put(temperature,response[i]);
}
db.insert(tableStatistics,null,values);
db.close();
}
catch (Exception e){
Log.e("Error in insert", e.toString());
}
}
答案 1 :(得分:0)
尝试以下更改......
public void addArrayEntry(String [] response){
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
//System.out.println(response.length);
for (int i=0; i<response.length; i++) {
values.put(temperature,response[i]);
}
db.insert(tableStatistics,null,values);
db.close();
}
catch (Exception e){
Log.e("Error in insert", e.toString());
}
}
String createTable = "CREATE TABLE statistics ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"temperature REAL, "+
"light INTEGER, "+
"humidity INTEGER)";
答案 2 :(得分:0)
谢谢大家的帮助。我终于使用函数
成功插入了所需的值public void addArrayEntry(String [] response) {
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(temperature, response[1]);
values.put(light, response[2]);
values.put(humidity, response[3]);
db.insert(tableStatistics, null, values);
db.close();
} catch (Exception e) {
Log.e("Error in insert", e.toString());
}
}