Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jackcess将数据从阵列传递到数据库_Java_Arrays_Ms Access_Gridview_Jackcess - Fatal编程技术网

Java 如何使用jackcess将数据从阵列传递到数据库

Java 如何使用jackcess将数据从阵列传递到数据库,java,arrays,ms-access,gridview,jackcess,Java,Arrays,Ms Access,Gridview,Jackcess,嗨,我这样做是为了从数据库到阵列检索数据 for(i=0;i<numfilas;i++){ HashMap<Object, Object> rowdata = new HashMap<Object, Object>(cur.getNextRow()); for(j=0;j<numcolumnas;j++){ datos[posicion]=rowdata.get(nombrecolumnas[j]).toString();

嗨,我这样做是为了从数据库到阵列检索数据

 for(i=0;i<numfilas;i++){
    HashMap<Object, Object> rowdata = new HashMap<Object, Object>(cur.getNextRow());
    for(j=0;j<numcolumnas;j++){
        datos[posicion]=rowdata.get(nombrecolumnas[j]).toString();
        posicion++;
    }
    }
(i=0;i)的

我在数据类型方面遇到麻烦了吗?因为数组是字符串类型,数据库有int类型、String类型、long类型

如果您试图更新的任何字段都是Access中的
Date/Time
字段,则可能是。JackAccess能够隐式地将字符串转换为数字(无论如何,在许多情况下),但在日期方面它无法做到这一点

对于名为[Members]的表中的示例数据

MemberID MemberName赞助商id DateJoined feepay
--------  ----------  ---------  ----------  -------
1 Gord 2014-01-16 0
下面的代码工作正常

try(Database db=DatabaseBuilder.open(新文件(“C:/Users/Public/mdbTest.mdb”)){
Table=db.getTable(“成员”);
Row-Row=CursorBuilder.findRow(表,Collections.singletonMap(“MemberID”,1));
如果(行!=null){
在Access中放置(“赞助商ID”、“0”);/“长整数”
第行。在Access中输入(“feepayed”、“130”);/“Currency”
表.updateRow(行);
}
否则{
System.out.println(“未找到行”);
}
}捕获(例外e){
e、 printStackTrace(系统输出);
}
然而,这是行不通的

row.put(“DateJoined”,“2014-01-23”);/“日期/时间”在Access中
由于Jackcess无法将字符串值隐式转换为其内部(数字)日期值,因此您需要执行以下操作

org.joda.time.DateTime dt=new org.joda.time.DateTime(“2014-01-23”);
row.put(“DateJoined”,dt.getMillis());
作为替代方案,您可能需要进行研究。它是一个纯Java JDBC驱动程序,使用JackAccess对Access数据库执行读写操作,但允许您使用以下更“正常”的SQL方法:

Connection conn=DriverManager.getConnection(
“jdbc:ucanaccess://C:/Users/Public/mdbTest.mdb”);
PreparedStatement ps=conn.prepareStatement(
“更新成员集”+
“赞助商ID=?,”+
“日期联接=?”+
“支付的费用=?”+
“其中MemberID=1”);
ps.setInt(1,Integer.parseInt(“0”));
org.joda.time.DateTime dt=新的org.joda.time.DateTime(“2014-01-23”);
ps.setTimestamp(2,新的时间戳(dt.getMillis());
ps.setBigDecimal(3,新的BigDecimal(“130”));
ps.executeUpdate();