我用的是sql server数据库,现在有两张表为t_order,t_order_item.他们有一个共同的字段order_id且都为主键还自增的.当进行插入记录的时候必须同时对两张表添加一条记录.要用到commit的东东.我不会用!
我的代码:
public void orderitem_insert(BookStore bookstore){
String sqlprimary="insert into t_order_item (book_name,book_count) values(?,?)";
String sq1="insert into t_order(customer_name,customer_addr,note,added_time,status)values(?,?,?,?,?)";
try{
PreparedStatement psprimary=conn.prepareStatement(sqlprimary);
PreparedStatement ps=conn.prepareStatement(sq1);
ps.setString(1,bookstore.getCustomername());
ps.setString(2,bookstore.getCustomeraddr());
ps.setString(3,bookstore.getNote());
// ps.setInt(4,bookstore.getBookamt());
ps.setString(4,bookstore.getAddedtime());
ps.setString(5,bookstore.getStatus());
ps.execute();
psprimary.setString(1,bookstore.getBookname());
psprimary.setInt(2,bookstore.getBookcount());
psprimary.execute();
}catch(Exception e){
e.printStackTrace();
}
}
我运行时就出错了,两张表一条记录都没增加我知道是ps.execute();和psprimary.execute();的问题,具体该怎么样实现我的功能谢谢了.
我的代码:
public void orderitem_insert(BookStore bookstore){
String sqlprimary="insert into t_order_item (book_name,book_count) values(?,?)";
String sq1="insert into t_order(customer_name,customer_addr,note,added_time,status)values(?,?,?,?,?)";
try{
PreparedStatement psprimary=conn.prepareStatement(sqlprimary);
PreparedStatement ps=conn.prepareStatement(sq1);
ps.setString(1,bookstore.getCustomername());
ps.setString(2,bookstore.getCustomeraddr());
ps.setString(3,bookstore.getNote());
// ps.setInt(4,bookstore.getBookamt());
ps.setString(4,bookstore.getAddedtime());
ps.setString(5,bookstore.getStatus());
ps.execute();
psprimary.setString(1,bookstore.getBookname());
psprimary.setInt(2,bookstore.getBookcount());
psprimary.execute();
}catch(Exception e){
e.printStackTrace();
}
}
我运行时就出错了,两张表一条记录都没增加我知道是ps.execute();和psprimary.execute();的问题,具体该怎么样实现我的功能谢谢了.
你这个插不进去 贴一下报的社么错
执行这一句时,connection就已经关闭了
恩忘了说下,我在sql server里把t_order和t_order_item表关联了(通过order-id)
若关联去掉就可以正常执行了.
我就想在这段代码里用事务处理.
执行这一句时,如果是autocommit的话,connection就已经关闭了
除非我用conn.close();
你要显示设置conn.setAutoCommit(false);//默认情况下,autocommit为true
在最后conn.commmit();