代码之家  ›  专栏  ›  技术社区  ›  nash

SQL Server中JDBC插入时自动生成密钥

  •  5
  • nash  · 技术社区  · 16 年前

    create table test (
      id int not null,
      myNum int null
    )
    

    PreparedStatement statement = connection.prepareStatement("insert into test(myNum) values(?)", Statement.RETURN_GENERATED_KEYS);
    statement.setInt(1, 555);
    statement.executeUpdate();
            statement.close();
    

    我得到一个java.sql。SQLException:无法将值NULL插入列“id”。

    我有一种感觉,这完全取决于RDMS。我们正在使用SQL Server 2005,我已经设置

    CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
    (
        [id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 1) ON [PRIMARY]
    

    4 回复  |  直到 16 年前
        1
  •  6
  •   Jordi Cabot    16 年前

    1. Oracle使用序列
    2. PostgreSQL使用序列
        2
  •  2
  •   Paul Sonier    16 年前

    您需要在测试表中设置id列以自动创建标识。对于SQL Server,您需要设置 IDENTITY()

        3
  •  2
  •   Peter D    16 年前

    你总是可以使用Hibernate。

        4
  •  1
  •   lumpynose    16 年前