我在将列表中的数据插入db SQLite时遇到问题。列表的某些元素为null,然后当我要使用此元素时,我会看到一个空指针异常。我可以做什么来存储db这个数据,即使有些是null ??
这是代码:
private void insertDB() {
for(int i = 0; i < listA.size(); i++) {
int check = dbPF.createPF(listA.get(i).getA(), listA.get(i).getB(), listA.get(i).getC(), listA.get(i).getD());
}
}
public int createPF(int a, String b, String c, String d) {
ContentValues initialValues = createContentValuesPF(a, b, c, d);
return (int) database.insert(tableA, null, initialValues);
}
private ContentValues creaContentValuesPod(int a, String b, String c, String d) {
ContentValues values = new ContentValues();
values.put(key1, a);
values.put(key2, b);
values.put(key3, c);
values.put(key4, d);
return values;
}
当列表中的一个节点为null时,Eclipse返回NullPointerException,但我想在db中存储空值。我能做什么?
感谢所有
答案 0 :(得分:0)
首先,你需要确保在你的表中创建语句中没有“not null”。 使用ContentValues时,只需跳过您想要为null的字段。
看看这个问题。它会给你你想要的。 Insert Nulls in SQLite DB
答案 1 :(得分:0)
如果您使用的是PreparedStatement,则可以通过利用setNull API将空数据插入数据库。以下是一个例子
preparedStatement.setNull(parameterIndex,Types.DATE);
答案 2 :(得分:0)
检查它是否为null,然后将空值放入数据库。
private void insertDB() {
String a = "";
String b = "";
String c = "";
String d = "";
for(int i = 0; i < listA.size(); i++) {
if(listA.get(i) != null){
a = listA.get(i).getA();
b = listA.get(i).getB();
c = listA.get(i).getC();
d = listA.get(i).getD();
}
int check = dbPF.createPF(a, b, c, d);
}
}
private ContentValues creaContentValuesPod(int a, String b, String c, String d) {
ContentValues values = new ContentValues();
values.put(key1, a);
if(b.equals(""){
values.put(key2, null);
}else{
values.put(key2, b);
}
if(c.equals(""){
values.put(key3, null);
}else{
values.put(key3, c);
}
if(d.equals(""){
values.put(key4, null);
}else{
values.put(key4, d);
}
return values;
}
我放了一个空字符串。 我有一个问题,为什么你有一个列表空指针引用?这不是一个好的方法。
答案 3 :(得分:0)
如果列表项为null
,则无法调用getA()
等。
如果您拥有null
项目,则需要执行其他操作:
private void insertDB() {
for(int i = 0; i < listA.size(); i++) {
int check = dbPF.createPF(listA.get(i));
}
}
public int createPF(MyObject item) {
ContentValues initialValues = createContentValuesPF(item);
return (int) database.insert(tableA, null, initialValues);
}
private ContentValues creaContentValuesPod(MyObject item) {
ContentValues values = new ContentValues();
if (item != null) {
values.put(key1, item.getA());
values.put(key2, item.getB());
values.put(key3, item.getC());
values.put(key4, item.getD());
} else {
values.putNull(key1); // or whatever value(s) you want
}
return values;
}