Java程序无法检测MS Access表中的所有列

Java程序无法检测MS Access表中的所有列,java,sql,database,ms-access-2007,Java,Sql,Database,Ms Access 2007,我有以下诊断sql语句select*from MachineShift,其中ShiftID='D'和MachineID='F22' 最初,我有这样一个:选择从MachineShift运行的小时,其中ShiftID='D',MachineID='F22',MachineDate=2014/01/01。然而,我得到了“参数太少”的错误。专门用于运行和加工的小时数 表:MachinShift(MachineID、ShiftID、OperatorID、HoursRunning、MachineDate)

我有以下诊断sql语句
select*from MachineShift,其中ShiftID='D'和MachineID='F22'

最初,我有这样一个:
选择从MachineShift运行的小时,其中ShiftID='D',MachineID='F22',MachineDate=2014/01/01
。然而,我得到了“参数太少”的错误。专门用于运行和加工的小时数

表:MachinShift(MachineID、ShiftID、OperatorID、HoursRunning、MachineDate)

在使用了我在另一个stackoverflow问题中发现的一些示例代码之后,我设法发现java程序本身没有看到这两列(HoursRunning和MachineDate)

以下是疑难解答: 使用此代码后:
ResultSetMetaData rsmd=rs.getMetaData();
System.out.println(rsmd.getColumnName(1));
System.out.println(rsmd.getColumnName(2));
System.out.println(rsmd.getColumnName(3));
System.out.println(rsmd.getColumnName(4))
System.out.println(rsmd.getColumnName(5))

我只有这3列。 机械人 希夫蒂德 歌剧演员

然后出现一个错误,称为“无效描述符索引”,我认为这意味着没有更多的列可供查找

我以前从未遇到过这种错误。我最初希望使用的sql语句在使用MS Access执行时工作得非常好,但当我使用java程序检索或更新数据时,它就找不到这些列。我还想补充一点,一个月前,java程序运行良好,它从这个表以及其他表中提取和更新数据,没有任何问题


这是某种制表问题吗?我重新启动了电脑,认为Access可能需要更新某种注册表,但问题一直存在。我还尝试过更改名称、从头开始重建表等。

您使用哪个JDBC驱动程序连接Access?JDBC-ODBC网桥驱动程序?杰克塞斯?UCanAccess?我使用的是:conn=DriverManager.getConnection(“jdbc:odbc:DRIVER={Microsoft Access驱动程序(*.mdb,*.accdb)那么…我猜是JDBC-ODBC吗?是的,那就是JDBC-ODBC桥驱动程序,它只打算作为一个过渡驱动程序,不受Oracle支持,有已知的bug,并且在Java 8中不再存在。我建议切换到Jackcess或ucanacess。我最近遇到了另一个关于JDBC-ODBC桥dr奇怪行为的问题我给了他们同样的建议。非常感谢你的建议。能不能提供一个链接,说明如何使用这些驱动程序?