当前位置: 代码迷 >> J2EE >> jdbc 事务有关问题
  详细解决方案

jdbc 事务有关问题

热度:68   发布时间:2016-04-22 01:46:05.0
jdbc 事务问题
JDBC 事务开始(sqlserver2008)
1.插入主表一条语句
2.查询主表新插入一条语句的主键(Connection 未提交如何查询到?)
3.插入从表一条语句(connection 未提交如何获得外键值?)
  事务结束

如何解决?先谢谢~!

------解决方案--------------------
你主表的主键是如何生成的?如果是用@@IDENTITY那么执行SELECT @@IDENTITY应该能够获取的到,如果你是自己的方式生成的话,那么你可以先获取到ID,然后再写入insert语句中。
------解决方案--------------------
Java code
Class.forName("com.mysql.jdbc.Driver");   Connection conn = DriverManager    .getConnection("jdbc:mysql://localhost/BBS?user=root&password=root");    //连接数据库conn.setAutoCommit(false);       //不自动提交   String sql = "insert into article values (null,0,?,?,?,now(),0)";PreparedStatement pstat = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//创建一个默认 PreparedStatement 对象,该对象能获取自动生成的键,适合insert语句//(该语句能自动生成键值)autoGeneratedKeys - 指示是否应该返回自动生成的键的标志Statement stat = conn.createStatement();pstat.setInt(1, -1);pstat.setString(2,title);pstat.setString(3,content);pstat.executeUpdate();ResultSet rsKey = pstat.getGeneratedKeys();      //ResultSet 指示键值rsKey.next();int key = rsKey.getInt(1);     //得到第一个键值stat.executeUpdate("update article set rootid = " + key + " where id = " + key);conn.commit();conn.setAutoCommit(true);     //设回自动提交
  相关解决方案