在 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/