我没有使用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/