c# - 在c#上的查询中添加参数

标签 c# mysql sql parameters

在 aspx 页面的代码隐藏中,我在 sql 查询中的参数上传递值时遇到问题。

我使用MySql数据库。

第 1 步:

我在列出查询的输出中添加:

while (reader.Read())
{
    idcolor = reader["idcolor"].ToString();
    colorList.Add(idcolor.ToString());
}

ns = string.Join("','", colorList.ToArray());

调试中,输出为:

ns = red','green

第 2 步:

我需要在 SQL 查询中使用string ns 的值。

并在参数中传递string ns的值:

str = null;
str = ns == null ? "" : ns.ToString();

sql = @" SELECT * FROM Experience WHERE Colors IN (?); ";

    DataSet dsColors = new DataSet();

    using (OdbcConnection cn =
      new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
    {
        cn.Open();

        using (OdbcCommand cmd = new OdbcCommand(sql, cn))
        {

            cmd.Parameters.AddWithValue("param1", Server.UrlDecode(str.ToString()));

            OdbcDataAdapter adapter = new OdbcDataAdapter(cmd);
            adapter.Fill(dsColors);
        }
    }

    return dsColors;

第 3 步:

如果在查询中使用:

sql = @" SELECT * FROM Experience WHERE Colors IN (?); ";

数据集中的输出为空。

如果在查询中使用:

sql = @" SELECT * FROM Experience WHERE Colors IN ( '" + Server.UrlDecode(str.ToString()) + "' ); ";

数据集中的输出是正确的。

有人知道我该如何解决这个问题吗?

你能推荐一下吗?

你能帮我吗?

提前谢谢你。

最佳答案

你必须使用MySql.Data.MySqlClient;连接到Mysql:

sql = @" SELECT * FROM Experience WHERE Colors IN (@param1,@param2) ";

    DataSet dsColors = new DataSet();

    using ( MySqlConnection cn =
      new MySqlConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
    {
        cn.Open();

        using (MySqlCommand cmd = new MySqlCommand(sql, cn))
        {

            cmd.Parameters.Add("@param1", colorList[0]/ToString());
            cmd.Parameters.Add("@param2",colorList[1].ToString());    
            MySqlDataAdapter adapter = new MySqlaAdapter(cmd);
            adapter.Fill(dsColors);
        }
    }

关于c# - 在c#上的查询中添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31809841/

相关文章:

MySQL 存储过程将变量输出为数组

java - 使用 Predicate 和 Criteria API 进行不区分大小写的搜索

mysql - 如何使用联接在 MySQL 中的三个表中运行查询?

c# - 抑制对象终结,直到其他线程运行

c# - 仅从 MongoDB C# 获取指定字段

c# - 从 C# 针对 ADAM 验证 ADAM 用户 - 无法绑定(bind)

c# - 为什么协变类型参数仅用于成员的返回类型?

MySQL LEFT JOIN 表中的多行

mysql - 如何在Prisma中添加时间属性?

php - 使用 2 个表格获取结果