【发布时间】:2009-05-17 10:49:19
【问题描述】:
在 MySQL .NET 提供程序中,您可以在语法中使用命名参数:
?parametername
现在,我正在尝试为将在“IN”列表中使用的参数创建一个命名参数,例如:
select * from mytable where id in (?ids)
如何使用命名参数,如果我使用varchar,它会在列表前后添加引号,即:
如果我使用 varchar 传递参数的值:
cmd.Parameters.Add("?ids", MySqlDbType.Varchar).Value = ids; // ids is a string which contains the ids separated by commas, e.g. 1, 2, 3 .. etc
查询会这样执行:
select * from mytable where id in ('1, 2 ,3')
当然这会报错,我如何在不获取引号的情况下传递命名参数,这是它应该执行的方式:
select * from mytable where id in (1, 2 , 3)
有什么解决方法吗?我目前正在使用 String.Format() 但想使用命名参数,这可能吗?
附:我只使用纯文本语句,没有 sproc,所以这些都不会传递给 sproc(以防你认为这是不可能的,因为 sprocs 不接受数组)
【问题讨论】: