Java 使用具有2个以上参数的准备语句删除记录

Java 使用具有2个以上参数的准备语句删除记录,java,mysql,prepared-statement,sql-delete,Java,Mysql,Prepared Statement,Sql Delete,我正在使用prepared语句对数据库执行一些操作。我的表格如下: +--------------------------------------------------------+ |Field | Type | Size | Key | Text | +--------------------------------------------------------+ |X1DEL | Char | 1

我正在使用prepared语句对数据库执行一些操作。我的表格如下:

+--------------------------------------------------------+
|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_表,其中field=?
。 我已经为两个参数创建了查询,如从我的_表中删除
delete,其中field=?和类型=?
现在我想再次对4到5个参数执行查询。我正在以
delete的形式从我的_表中编写一个查询,其中field=?,type=?,size=?和键=?

我尝试过这个查询,但没有得到结果。

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

delete from my_table where field = ? and type = ? and size = ? and key = ?

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

delete from my_table where field = ? and type = ? and size = ? and key = ?
根据设计,使用任意数量的参数构建查询

final String sql = "delete from my_table where field=? and type=? and size=? and key=?";
如果您的参数在
集合中
,您可以使用链接教程的建议和
“使用for循环或while循环设置输入参数的值,使编码更容易”
。根据所提供的
类型和参数数量,您需要为每个参数调用相应的
.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的
索引。

通过设计,可以使用任意数量的参数构建查询

final String sql = "delete from my_table where field=? and type=? and size=? and key=?";
如果您的参数在
集合中
,您可以使用链接教程的建议和
“使用for循环或while循环设置输入参数的值,使编码更容易”
。根据所提供的
类型和参数数量,您需要为每个参数调用相应的
.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的
索引。

我不清楚您想做什么。如果要创建一个包含4个条件的查询,则创建一个(否,
不是分隔条件的正确方法,您需要使用
)。它是否适用于两个以上的参数?我有一个想法,因为它不适用于两个以上的参数,所以我要求提供查询。您可以使用数据库或驱动程序支持的任意多个参数。我不确定为什么这不是显而易见的,所以我假设您确实想做其他事情。您的问题中包含两个以上参数的查询是错误的:它有语法错误。这与参数的数量无关。我不清楚你想做什么。如果要创建一个包含4个条件的查询,则创建一个(否,
不是分隔条件的正确方法,您需要使用
)。它是否适用于两个以上的参数?我有一个想法,因为它不适用于两个以上的参数,所以我要求提供查询。您可以使用数据库或驱动程序支持的任意多个参数。我不确定为什么这不是显而易见的,所以我假设您确实想做其他事情。您的问题中包含两个以上参数的查询是错误的:它有语法错误。这与参数的数量无关。你可以自己尝试一下,并在发表此评论后的39分钟内轻松回答。如果你的代码写得不好,它就会失败。你可以自己尝试一下,并在你发布此评论后的39分钟内轻松回答。为什么字符串和准备好的语句在这里是最终的,主要是因为工作经验的习惯。为什么字符串和准备好的语句在这里是最终的,主要是因为工作经验的习惯。