0

データベースでいくつかの操作を行うために準備済みステートメントを使用しています。私は以下のようなテーブルを持っています:

+--------------------------------------------------------+
|Field  |    Type  |    Size |   Key  |  Text            |
+--------------------------------------------------------+           
|X1DEL  |  Char    |     1   |     2  | Status           |  
|X1CMP  |  Zoned   |     3   |     1  | Company No.      | 
|X1ORD  |  Zoned   |     9   |     2  | Order Number     | 
|X1TYPE |  Char    |     1   |     1  | Transaction Type |
|X1ORDT |  Zoned   |     8   |     0  | Order Date       |
|X1CUST |  Char    |    10   |     0  | Customer Number  |
|X1PO   |  Char    |    20   |     0  | PO Number        |
|X1OTOT |  Zoned   |    11   |     2  | Order Total      |
+--------------------------------------------------------+

delete from my_table where field=?単一のパラメーターとして1つの削除クエリを実行しています。2 つのパラメーターのクエリを作成しましたが、delete from my_table where field=? and type=? ここでも 4 ~ 5 つのパラメーターのクエリを実行したいと考えています。delete from my_table where field=?,type=?,size=? and key=? このクエリで試したとおりにクエリを作成していますが、結果が得られません。

4

2 に答える 2

3

設計上、準備済みステートメントを使用して、任意の数のパラメーターを使用してクエリを作成します。

final String sql = "delete from my_table where field=? and type=? and size=? and key=?";

パラメータが にあるcollection場合は、リンクされたチュートリアル および のアドバイスを使用できます"make coding easier by using a for loop or a while loop to set values for input parameters"。提供するパラメーターの数に応じて、それぞれに適切なメソッドtypeを呼び出す必要があります。.set

 //assuming con (DB connection) is properly setup
 final PreparedStatment statement = con.prepareStatement(sql); 
 statement.setString(1, "X1DEL");
 statement.setString(2, "CHAR");
 statement.setInt(3,1);
 statement.setInt(4, 2);

 //... etc

1-based準備済みステートメントは索引付けであることを覚えておく必要があります。

于 2013-10-08T15:22:15.197 に答える