gpt4 book ai didi

.net - 在 MySQL .NET Provider 中使用命名参数

转载 作者:行者123 更新时间:2023-11-29 05:00:54 24 4
gpt4 key购买 nike

在 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() 但想使用命名参数,这是否可能?

附言我只使用纯文本语句,没有存储过程,所以这些都不会传递给存储过程(以防万一你认为这是不可能的,因为存储过程不接受数组)

最佳答案

这个问题在这里被问了很多次,我已经停下来数一数了。

无论采用何种技术,答案始终相同。您只需在计划使用 IN“参数”时向查询添加尽可能多的参数。

如果你想查询WHERE id IN (1, 2 ,3),你准备好的语句必须是这样的:

SELECT * FROM mytable WHERE id IN (?, ?, ?)

使用您认为合适的任何字符串构建工具来创建这样的 SQL 字符串。之后,将三个参数值添加到其中。

准备语句的全部意义在于将 SQL 代码与数据分开。逗号是 SQL 代码,您永远不会将它们放入带有单个参数的语句中,它们必须在之前

好的, 有一个选择。制作一个单独的/临时表,将您的 ID 存储在其中并查询如下内容:

SELECT
*
FROM
mytable m
INNER JOIN searchtable s ON m.id = s.id

关于.net - 在 MySQL .NET Provider 中使用命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com