2

私の質問が具体的でない場合、または以前に回答されている場合は申し訳ありません。私はそれを探して、より良い質問方法を探してみましたが、これが最も正確な方法です.

次の方法でデータベースに新しい行を挿入するプログラムを Java で開発しました。

INSERT INTO table_name VALUES (?,?,?)

問題は、プログラムの多くの部分にこのクエリがあり、テーブルに 4 番目の列を追加することにしたことです。プログラム内のすべてのクエリを新しい疑問符で更新する必要がありますか? そうしないと、クラッシュします。

これらの場合、どのように進めるのが最善でしょうか?

4

3 に答える 3

5

はい。

ステートメントを使用しているため、余分な?パラメータープレースホルダー)を追加する必要があります。implicit INSERTこれは、値が挿入されるテーブルの列名を指定しなかったことを意味します。

INSERT INTO table_name VALUES (?,?,?)
// the server assumes that you are inserting values for all
// columns in your table
// if you fail to add value on one column. an exception will be thrown

次回INSERTステートメントを作成するときは、列名を指定して、列を追加してテーブルを変更するときに、すべてのプレースホルダーが更新されないようにしてください。

INSERT INTO table_name (Col1, col2, col3) VALUES (?,?,?)
// the server knows that you are inserting values for a specific column
于 2013-01-10T01:00:00.693 に答える
2

プログラム内のすべてのクエリを新しい疑問符で更新する必要がありますか?

おそらく。これらのクエリをすべて更新している間にすべきことは、おそらくTable Data GatewayRow Data Gatewayなどのデータ ソース パターンを使用して、それらをオブジェクトにカプセル化することです。そうすれば、自分自身を繰り返さず、次にテーブルを更新するときに、クエリを更新する場所が 1 つだけになります。

于 2013-01-10T00:59:59.520 に答える
0

使用した構文が原因で、いくつかの問題が発生する可能性があります。列名の欠如について言及しました。テーブルINSERT構造を変更するとすぐに、クエリが失敗し始めます。

次の構文を使用した場合: INSERT INTO table_name (C1, C2, C3) VALUES (?,?,?) 新しい列に適切なデフォルト値があると仮定すると、問題なく動作します。

于 2013-01-10T00:59:07.530 に答える