我尝试使用ResultSet将一行插入H2数据库(1.4.182)。通过调用insertRow,程序将引发异常。而且我不知道问题出在哪里。
例外是:
The result set is not updatable. The query must select all columns from a unique key.
Only one table may be selected. [90127-182]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.jdbc.JdbcResultSet.getUpdatableRow(JdbcResultSet.java:3081)
at org.h2.jdbc.JdbcResultSet.insertRow(JdbcResultSet.java:2966)
at JdbcResultSetUpdate.main(JdbcResultSetUpdate.java:26)
程序执行以创建ResultSet的SQL语句为:
"select NAME from TEST.TST_DOZENT"
TST_DOZENT由以下语句创建:
"CREATE TABLE TEST.TST_DOZENT (NAME VARCHAR(50))", "Create TST_DOZENT-Tab"
因此,查询语句不使用系统表,该表没有主键。
java语句对象是通过以下方式创建的:
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
我无法弄清楚问题出在哪里或我做错了什么。
我将不胜感激任何帮助。
谢谢你的阅读。
该表需要具有主键或唯一索引,并且查询需要包含该列。例子:
CREATE TABLE TEST.TST_DOZENT (ID PRIMARY KEY, NAME VARCHAR(50));
SELECT ID, NAME FROM TEST.TST_DOZENT;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句