当前位置: 首页 > 面试题库 >

在Java中插入SQL后访问自动增量标识字段

浦修文
2023-03-14
问题内容

关于如何从通过调用读取分配给新创建的记录的自动递增身份字段的任何建议java.sql.Statement.executeUpdate

我知道如何在多个数据库平台的SQL中执行此操作,但是我想知道存在哪些数据库独立接口java.sql来执行此操作,以及有关人们在整个数据库平台上的经验的任何输入。


问题答案:

以下代码片段应做ya’:

PreparedStatement stmt = conn.prepareStatement(sql, 
                                 Statement.RETURN_GENERATED_KEYS);
// ...

ResultSet res = stmt.getGeneratedKeys();
while (res.next())
    System.out.println("Generated key: " + res.getInt(1));

已知这可用于以下数据库

  • 德比
  • 的MySQL
  • SQL服务器

对于不起作用的数据库(HSQLDB,Oracle,PostgreSQL等),您将需要使用数据库特有的技巧。例如,在PostgreSQL上,您可以调用所讨论SELECT NEXTVAL(...)的序列。

请注意,的参数executeUpdate(...)是类似的。



 类似资料:
  • 但会导致以下错误消息: 行2,列1(id)的大容量加载数据转换错误(类型不匹配或指定代码格式的字符无效)。

  • 我试图在表中插入一行,带有一个自动递增字段,但我遇到了错误。该表的结构为: id:自动增量 级别:文本 概念:文本 . 在w3c中,我了解到要将新记录插入表中,我们不必为“自动增量”列指定值(将自动添加唯一值)。 我做错了什么?

  • 我有一个表,我试图插入新行,但有一个列不会自动递增自己。有没有办法编写一个INSERT命令,根据列中的最高值自动递增该列?

  • 问题内容: 我正在尝试获取类似mysql_insert_id()的mysql命令;它检索最后插入的行的auto_increment ID。我该怎么做才能在Java中获得它? 我的姓氏声明为INT。我不知道在rs.get中使用什么以及参数。 问题答案: 尝试使用别名

  • 我正在使用java中的MySQL库执行一个查询。在我的数据库结构中,有一列名为(主键,非空且自动递增)。通常在每次插入查询中,我都将值设置为,在查询执行后,它会增加最后一个id,但在java中这样做会给我异常。 这就是代码: 如何使用自动增量ID执行查询?