0

データベース テーブルに列を追加しようとしていますが、

PreparedStatement  ps = con.prepareStatement(query);  
ps.execute();
ps.close();

クエリは(有効なSQL)のようなものです

ALTER TABLE mytable ADD COLUMN mycolumn datatypeinfo

とにかく、正常に実行され、列が作成されます。しかし、execute ステートメントは false を返します。executeUpdate を試したところ、0 行が返されました。

このすべてが、con.setAutoCommit が false に設定されたトランザクション内にあることに注意してください。だから、それが問題なのかどうかはわかりません。問題は、他の更新クエリに進む前に、列を作成する必要があることです。したがって、トランザクションで実行する必要があります。

4

1 に答える 1

5

の戻り値はexecute()、それが成功したかどうかを示すのではなく、実行されたクエリが結果を返したかどうかを示します。

は結果ALTER TABLEを返さないので、execute()正当に返されます。false

Javadocsからの引用:

戻り値:最初の結果が ResultSet オブジェクトの場合はtrue 。最初の結果が更新カウントであるか、結果がない場合はfalse

于 2012-05-02T18:12:27.633 に答える