identity_insert
2017-10-22
使用Preparedstatement向sql server数据库中插入数据,以userTable表为例:
id : int,主键,自增
username : varchar(20)
password : varchar(20)
现在要插入用户名A和密码123,如果希望id按默认值自增,则:
(如果未将列一一对应,则可能报错“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表’userTable’中的标识列指定显式值。”)
PreparedStatement pstmt=null;
SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();
Connection ct=sqlsrvdb.getConn();
pstmt=ct.preparestatement("insert into userTable(username,password) values(?,?)");
pstmt.setString(1, "A");
pstmt.setString(2, "123");
pstmt.executeUpdate();
若希望自行指定id的值,如90,则:
(如果设置了IDENTITY_INSERT为ON却未指定显式值,则可能报错“当 IDENTITY_INSERT 设置为 ON 或某个复制用户向 NOT FOR REPLICATION 标识列中插入内容时,必须为表 ‘userTable’ 中的标识列指定显式值。”)
PreparedStatement pstmt=null;
SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();
Connection ct=sqlsrvdb.getConn();
pstmt=ct.prepareStatement("
set IDENTITY_INSERT userTable ON
insert into userTable(username,password) values(?,?,?)
set IDENTITY_INSERT userTable ON
");
pstmt.setInt(1,90);
pstmt.setString(2, "A");
pstmt.setString(3, "123");
pstmt.executeUpdate();
以上为个人目前遇到的在java程序中插入数据(含自增列)遇到的问题和解决办法……个人潦草小笔记