Csharp MySQL如何在查询中插入变量

时间:2019-03-20 11:58:07

标签: c# mysql

这是我目前正在尝试的:

var value = Datepicker1.Value;

List<ChartData> data = new List<ChartData>();
string connetionString;
MySqlConnection cnn;
connetionString = “TAKEN OUT FOR SECURITY”;
cnn = new MySqlConnection(connetionString);
cnn.Open();

MySqlDataAdapter da = new MySqlDataAdapter("SELECT SUBSTRING(date_time,1,10), sum(Total), sum(Total_ly),  AVG ((Total + Total_ly)/2) FROM Transaction WHERE Substring(date_time,1,10) LIKE '%@param1%' Group By date_time Having sum(Total)<>0; ", cnn);   
da.SelectCommand.Parameters.AddWithValue("@param1", value);

DataTable table = new DataTable();
da.Fill(table);

所以,我要做的就是:WHERE Substring(date_time,1,10) like '%2/24/2019%'那就是硬编码版本,我只需要将其存储在变量中,然后检查变量而不是硬编码字符串(如果这样)?

但是它不起作用!而且没有给出SQL异常!

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

运行时程序与数据库之间的不兼容性实际上与SQL无关。日期格式必须相同。供以后参考,这是解决方法:

String value = Datepicker1.Value.ToString();
String day = value.Substring(0,10);

这是一个非常简单的修复程序。

答案 1 :(得分:0)

如果我理解正确,那么您想将“ date_time,1,10”,“ Total”等值添加到您的SQL字符串中,这是正确的吗?

尝试一下,并将其作为MySqlDataAdapter中的第一个参数

var sql = $"SELECT SUBSTRING({date_time},1,10), sum({Total}), sum({Total_ly}),  AVG ({(Total + Total_ly)/2}) FROM Transaction WHERE Substring({date_time},1,10)= @param1 Group By date_time Having sum({Total})<>0; ";

---编辑----

根据您的修改确定,请从此处https://dev.mysql.com/doc/dev/connector-net/6.10/html/P_MySql_Data_MySqlClient_MySqlDataAdapter_SelectCommand.htm尝试解决方案