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=?针对单个参数执行一个删除查询。我已经创建了 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=?";

如果您的参数在 a 中,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 回答
1

当 2 参数示例向您展示了正确的做法时,您为什么要这样做?

delete from my_table where field = ? and type = ? and size = ? and key = ?
于 2013-10-08T15:02:27.620 回答