相关疑难解决方法(0)

DB中最后一次插入行的值

有没有办法从最后插入的行中获取值?

我正在插入一行,由于序列创建,PK将自动增加,我想得到这个序列号.只有PK才能保证在表中是唯一的.

我正在使用Java和JDBC和Oracle.

我忘了添加我想使用下面的结果集检索此值.(我用mysql尝试了这个并且它运行成功,但我不得不切换到Oracle,现在我得到了ID的字符串表示而不是实际的序列号)

Statement stmt = conn.createStatement();
stmt.executeUpdate(insertCmd, Statement.RETURN_GENERATED_KEYS);
stmt.RETURN_GENERATED_KEYS;
ResultSet rs = stmt.getGeneratedKeys();
if(rs.next()){
   log.info("Successful insert");
   id = rs.getString(1);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段将返回存储在mysql表中的列int值.但是由于我已切换到Oracle,返回的值现在是一个奇怪的字符串值.

java database oracle jdbc

10
推荐指数
2
解决办法
2万
查看次数

关于主键和插入的简单mysql问题

在mysql中,如何在自动增量时获取用于插入操作的主键.

基本上,我希望在语句完成时返回新的自动增量值.

谢谢!

mysql insert primary-key

8
推荐指数
2
解决办法
6549
查看次数

JDBC PreparedStatement始终返回1作为自动生成的密钥

我有这个代码试图在数据库中插入一条记录:

try {
 Connection conn = getConnection();

 String sql = 
   "INSERT INTO myTable(userId,content,timestamp) VALUES(?,?,NOW())";
 PreparedStatement st = 
    conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

 st.setLong(1, userId);
 st.setString(2, content);
 id = st.executeUpdate(); //this is the problem line            
} catch(Exception e) {}
Run Code Online (Sandbox Code Playgroud)

问题是,虽然正确插入了记录,但我想要id包含刚刚插入的记录的主键+ auto_increment id.但是,由于某种原因,它总是返回'1'作为id,可能是因为userId插入期间值为1.

我的桌子是InnoDB.起初userId是另一个表的外键,不管我已经删除了外键,甚至是userId列上的索引,但我仍然得到1作为返回值.

我有什么想法我做错了吗?

java mysql jdbc

6
推荐指数
2
解决办法
7778
查看次数

ResultSet中的虚假数据

我使用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,
);
Run Code Online (Sandbox Code Playgroud)

我正在尝试将(名字,姓氏)插入元组,然后获取其中的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);
        }
Run Code Online (Sandbox Code Playgroud)

这很好用.但我的问题是密钥应该是整数,而不是字符串.每次我跑,我得到一个包含"AAA3vaAAGAAAFwbAAG",或类似的规定的字符串的ResultSet.我想获取person_id,以便稍后在我的Java程序中使用它.

在搜索ResultSet或执行语句本身方面,我有什么问题吗?

java database oracle jdbc resultset

0
推荐指数
1
解决办法
72
查看次数

标签 统计

java ×3

jdbc ×3

database ×2

mysql ×2

oracle ×2

insert ×1

primary-key ×1

resultset ×1