浏览 3023 次
锁定老帖子 主题:获取插入数据后自动增长列的值
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-01
{ /** * 获取插入数据后的自动增长列的值,这种方式必须是sql2005的驱动才能这样获取, *在mysql中也是这样获取 * @param args */ public static void main(String[] args) { try { String sql="insert into person values(?,?)"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=pubs","sa",""); //需要增加一个Statement.RETURN_GENERATED_KEYS这样的参数 java.sql.PreparedStatement p=conn.PreparedStatement(sql,Statement.RETURN_GENERATED_KEYS); p.setObject(1, "zengguofeef"); //p.setObject(2, new java.sql.Date(System.currentTimeMillis())); //必须这样设置,System.currentTimeMillis()表示当前系统时间的毫秒数,Timestamp()方法会根据这个毫秒数设置成当前时间 p.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis())); p.executeUpdate(); //通过这个方法获取getGeneratedKeys(); ResultSet rs=p.getGeneratedKeys(); rs.next(); int num=rs.getInt(1); System.out.println("自动增长列为:"+num); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } /** * 在sql 2000中这样获取,驱动程序,jar包也不同了 */ public static void main(String[] args) { //在sql语句后面加上一个select scope_identity() String sql="insert into person values(?,?) select scope_identity()"; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs","sa",""); java.sql.PreparedStatement p=conn.prepareStatement(sql); p.setObject(1, "zengguofeef"); p.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis())); //这里使用的是executeQuery()方法,而不是executeUpdate() ResultSet rs=p.executeQuery(); rs.next(); int num=rs.getInt(1); System.out.println("自动增长列为:"+num); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |