0

如果数据库对任何插入产生错误,推荐的插入一批记录或不插入的方法是什么?这是我当前的代码:

PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
for (MyModel m : myModels)
    Base.addBatch(ps, m.getCol1());
Base.executeBatch(ps);
ps.close();

这会插入记录,直到第一个失败(如果发生)。
我想要全部或全部插入,然后我正在考虑包装 executeBatch():

Base.openTransaction();
Base.executeBatch(ps);
Base.commitTransaction();

如果它是正确的,我应该做Base.rollbackTransaction()一些try catch吗?
我还应该关闭ps.close()一个finally块吗?

谢谢!

4

1 回答 1

0

事务性批处理操作与非批处理操作没有任何不同。请参阅:http: //javalite.io/transactions#transacted-activejdbc-example以了解典型模式。

然后你会这样做:

List<Person> myModels = new ArrayList<>();
    try{
        Base.openTransaction();
        PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
        for (Person m : myModels){
            Base.addBatch(ps, m.getCol1());
        }
        Base.executeBatch(ps);
        ps.close();
        Base.commitTransaction();
    }catch(Exception e){
        Base.rollbackTransaction();
    }

这样,您的数据在异常情况下是完整的

于 2015-09-17T21:24:16.257 回答