我正在用Java(NetBeans 7.3.1)做一个简单的GUI应用程序,在该应用程序中,我使用ResultSet来检索和更新NetBeans虚拟数据库中的数据。
我创建了数据库"Employees"和一个表"WORKERS"。很难,我无法更新其中的数据。
代码是
public void doConnect() {
String host = "jdbc:derby://localhost:1527/Employees";
String uName = "adm";
String uPass = "admin";
String SQL = "SELECT * FROM APP.WORKERS ORDER BY ID";
try {
con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(SQL);
int conc = rs.getConcurrency();
System.out.println(conc);
rs.next();
int id_col = rs.getInt("ID");
String first_name = rs.getString("First_Name");
String last_name = rs.getString("Last_Name");
String job = rs.getString("Job_Title");
System.out.println(id_col + " " + first_name + " " + last_name + " " + job);
textId.setText(Integer.toString(id_col));
textName.setText(first_name);
textLast.setText(last_name);
txtJob.setText(job);
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
getConcurrency();
的结果为1007(ReadOnly)。我做错了什么?我找不到错误。
这不是因为您使结果集在rs.deleteRow();
之后可更新吗?也许如果你放置
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
在CCD_ 3之前它工作。
您可以尝试在变量con下的try-catch子句中写入以下内容:
con.setReadOnly(false);
如果这不能解决问题,您必须找到一种方法来访问NetBeans中的数据库选项,并确保数据库对象的访问和使用设置为可编辑/可更新/读写。由于我使用Eclipse,而且我的NetBeans技能有点生疏,所以我无能为力。