【发布时间】:2015-05-04 09:25:36
【问题描述】:
我想在 Java 8 下使用 UCanAccess 创建一个 Access 数据库连接。这是我的代码:
String employeeName = endrollNameFields.getText();
String employeeAddress = endrollAddressFields.getText();
try
{
//------------CREATE CONNECTION TO DATA BASE--------------/
String DBPAD = "sourceFolder\\employeeTable2.mdb";
String DB = "jdbc:ucanaccess://" + DBPAD;
con = DriverManager.getConnection(DB, "", "");
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "select * from employeeTable2";
rs = st.executeQuery(sql);
rs.moveToInsertRow();
rs.updateString("Name", employeeName);
rs.updateString("Address", employeeAddress);
rs.insertRow();
st.close();
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql1 = "select * from employeeTable2";
rs = st.executeQuery(sql1);
JOptionPane.showMessageDialog(null, "<html>" + "<font color=\"#008000\">" + "<html><span style='font-size:1.5em'>Employee Successfuly Inserted to Data Base");
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null, e1);
}
我在我的 JTextField 中输入了条目,但是当我单击包含上面代码的按钮时,会出现此错误消息:
net.ucanaccess.jdbc.Ucanaccess SQLException:invalid cursor state: 所有列必须在插入前设置
我的代码中缺少什么或缺少什么?
【问题讨论】:
-
表
employeeTable2真的只包含两行吗? (姓名+地址)。 -
您为什么要通过结果集而不是通过
insert语句来执行此操作?正如斯蒂芬所说,您的表格可能比您设置的两个列更多。通过结果集插入时需要设置所有列。
标签: java jdbc ucanaccess