Javaを使用して画像を操作するOracleについて

私は私のプロジェクトを行うためにSSHを使用していません。まず、 empty_blob()を挿入し、それを更新します。 executeUpdate()を呼び出すと、新しいレコード。私の 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();
1
SSHとは何か関係がありますか?
追加された 著者 sarnold,

2 答え

最後に生成されたシーケンス値を取得するには、次の2つのオプションがあります。

insert文を実行した後にseq_name.nextvalを使用できます(例: SELECT my_sequence.nextval FROM dual; )。

トリガを使用して列が移入された場合は、JDBC APIを使用して生成された値を取得できます。

pstm = conn.prepareStatement(ADD_SQL, new String[] { "NO"} );
...
pstm.executeUpdate();

ResultSet rsNo = pstmt.getGeneratedKeys();
if (rs.next())
{
   long id = rs.getLong(1);
   System.out.println("The generated value was: " + id);
}
0
追加された
Oracleドライバ(少なくとも最新バージョン)はgetGeneratedKeys()をサポートしています。なぜそれはないと思いますか?
追加された 著者 a_horse_with_no_name,
次に、ドライバをここからアップグレードする必要があります。 oracle.com/ technetwork/database/features/jdbc/index-091264.h‌ tml 10.xより大きいバージョンのものは何でもすべきです。
追加された 著者 a_horse_with_no_name,
私はあなたが私の質問に答えてくれたのです。しかし、私のロラクルは、フィーチャーメソッドgetGeneratedKeys()をサポートしていません。幸いにも、私はそれを解決する簡単な方法を見つけます。最初に 'select sequence.nextval from dual'を選択し、レコードを挿入します。私の英語は貧しいです、あなたの答えに感謝します。
追加された 著者 cstur4,
私はトランザクションでトランザクションを行う方法を知りたいと思っています。トランザクションを実行するためのconn.setAutoCommit(偽)を知っています。
追加された 著者 cstur4,
私はあなたが私に案内するものを試しています。その結果、apiがサポートされていない胎児を説明する例外が発生しました。
追加された 著者 cstur4,
おかげさまで、トランザクションでトランザクションを実行するために、接続のメソッドsetAutoCommit(false)を知っているjava.Iを使用して、トランザクション内でトランザクションを実行するために何をすべきか教えてください。
追加された 著者 cstur4,
私はとても興奮しているので、私は長い間あなたを困惑させている問題を解決しました。おかげで、あなたに最高の願いが!
追加された 著者 cstur4,

トランザクション分離レベルと何か関係があります。

あなたはno =(select max(no)from ....を必要としません。

私はあなたが 'いいえ'を入力し、その新たに挿入された値を返す必要があるシーケンスを使用していると仮定します。

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);
0
追加された
私は、OracleがPL/SQL以外の帰結節をサポートしているとは考えていません。
追加された 著者 a_horse_with_no_name,
私はあなたが私の質問に答えてくれたのですが、私はregisterOutParameter()というメソッドを見つけることができません。幸いにも、私はそれを解決する簡単な方法を見つけます。最初に 'select sequence.nextval from dual'を選択し、レコードを挿入します。私の英語は貧しいです、あなたの答えに感謝します。
追加された 著者 cstur4,
私はトランザクションでトランザクションを行う方法を知りたいと思っています。トランザクションを実行するためのconn.setAutoCommit(偽)を知っています。
追加された 著者 cstur4,