我没有使用SSH来做我的项目。首先,我插入一个empty_blob(),然后更新它。但是当我调用executeUpdate()时,其他进程似乎插入了一条新记录。我的sql max(no)将选择错误的记录。以及如何在交易中使用交易?

    conn.setAutoCommit(false);
    pstm = conn.prepareStatement(ADD_SQL);
    pstm.setString(1, brand.getName());
    pstm.setString(2, brand.getDescription());
    pstm.setString(3, brand.getAddress());
    pstm.executeUpdate();

    pstm = conn.prepareStatement("select * from brands where no=(select max(no) from brands)        for update");
rs = pstm.executeQuery();

最佳答案

与事务隔离级别有关。

您不需要where no =(从...中选择max(no)。

我假设您正在使用序列填充“ no”,并且需要返回该新插入的值。

insert into foo(no, name,description, address)
values(seq_no.nextvalue, ?,?,?);
returning no into ?


然后

...
pstm.registerOutParameter(4,TYPES.NUMBER,0);
pstm.executeUpdate();
int newNo=pstm.getInt(4);

关于java - 关于java使用oracle操作图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8556425/

10-09 05:33