我正在尝试找到一种正确的方法来执行此操作,而不是简单的字符串连接。
我有一个(简化的)SQL 语句,如下所示:
SELECT * FROM Zones WHERE id in (@zoneIDs);
我打算插入@zoneIDs
这样的值:100000,100001,100002
我在这个特定的实例中使用 VB,但它应该适用于使用 MySQL 连接器的任何 .Net 语言。我正在尝试的是:
Private GetZones As String = "SELECT * FROM Zones WHERE id in (@zoneIDs)"
Dim Param As MySqlParameter = New MySqlParameter("@zoneIDs", MySqlDbType.String)
Param.Value = "100000,100001,100002"
Dim adapter As MySqlDataAdapter = New MySqlDataAdapter(GetZones)
Dim dt as DataTable = New DataTable()
adapter.Fill(dt)
但是要填写的dt
只是 ID 100000 的行,就好像查询中没有其他人一样。我的猜测是它正在运行这样的命令:
SELECT * FROM Zones WHERE id in ("100000,100001,100002");
代替
SELECT * FROM Zones WHERE id in (100000,100001,100002);
我个人更喜欢使用存储过程而不是像这样的字符串,但我相信我会在那里碰壁。使用这样的参数填充 IN 子句的正确方法是什么?