【发布时间】:2018-04-20 00:01:51
【问题描述】:
我在使用 JDBC 的 ResultSet 方面遇到了一些问题。
这是我的关系:
create table person (
person_id number(5) generated always as identity
minvalue 1
maxvalue 99999
increment by 1 start with 1
cycle
cache 10,
firstname varchar(10) not null,
lastname varchar(10) not null,
);
我正在尝试将 (firstname, lastname) 插入到元组中,然后获取从中产生的 person_id。这是我的 JDBC 代码:
//connection is taken care of beforehand and is named con
prep = con.prepareStatement("insert into person (firstname, lastname) values (?, ?)", Statement.RETURN_GENERATED_KEYS);
prep.setString(1, firstname);
prep.setString(2, lastname);
prep.execute();
ResultSet generated = prep.getGeneratedKeys();
if (generated.next()) {
String key = generated.getString("0");
System.out.println(key);
}
这一切正常。但我的问题是密钥应该是整数,而不是字符串。每次我运行它时,我都会得到一个包含“AAA3vaAAGAAAFwbAAG”字符串或类似内容的结果集。我想获取 person_id,以便稍后在我的 Java 程序中使用它。
在搜索 ResultSet 或执行语句本身时,我做错了什么吗?
【问题讨论】:
-
为什么
generated.getString("0")会返回任何有意义的东西? -
我的印象是它检索到了ResultSet中唯一的一条数据。首先,我没有尝试过真正从对象中获取某些东西的方法,所以这就是我解决的问题。
-
你用的是什么数据库?
-
我正在使用使用我在本地创建的关系的自定义数据库。
-
@GregoryCheng 不,您使用的是什么数据库引擎?甲骨文?
标签: java database oracle jdbc resultset