jackcess空字段从数组到数据库异常

时间:2014-08-06 23:45:47

标签: android jackcess

我已使用此代码将数据从访问数据库传递到数组

    try {
    for(i=0;i<numfilas;i++){
    HashMap<Object, ?> rowdata = new HashMap<Object, Object>(cur.getNextRow());
    for(j=0;j<numcolumnas;j++){

        try
        {
            //get the value at this cursor position
            datos[posicion]=rowdata.get(nombrecolumnas[j]).toString();
        }
        catch(NullPointerException e)
        {
            //if it's null, just add the empty string
            datos[posicion] = "";
        }

        posicion++;

    }
    }posicion=0;
} catch (IOException e) {

正如你可以看到DB中有一个空字段然后我在我的数组中放入一个空字符串,当我想将数据从数组写回DB时出现问题,如下所示:

 int j = 0;
cur.reset();
Map<String, Object> myMap = new HashMap<String, Object>();
try {

    while(j<32){
    cur.moveToNextRow();
    myMap.clear();
    for (int i = 0; i < numcolumnas; i++) {
        myMap.put(nombrecolumnas[i], datos[j]);
        j++;
    }
    cur.updateCurrentRowFromMap(myMap);
    }

} catch (IOException e) {
    // TODO Auto-generated catch block

    //e.printStackTrace();
}

然后我收到此错误

Java.lang.NumberFormatException: Invalid Double: ""

如果数据库的列数据类型是TEXT,那么没有任何反应,但如果数据类型为long或double,那么我得到该错误,我该如何解决?

1 个答案:

答案 0 :(得分:1)

将内容放入数组的代码会将null值转换为零长度字符串,因此从数组中提取内容的代码可能需要反向执行,如下所示:

myMap.put(nombrecolumnas[i], "".equals(datos[j]) ? null : datos[j]);