我很难找到合适的参数传递给MySQL查询。在MySQL工作台中,我的查询工作正常,但在C#代码中不行。我想是因为参数传递错误。
这就是为什么我想看看我到底要传递给cmd.ExecuteScalar()方法什么。但我不知道如何确定cmd字符串。
在调试器中,我只得到带有形式参数的查询,而不是传递的参数。即使通过使用cmd.ToString(),我也会得到这样的胡说八道:
MySql.Data.MySqlClient.MySqlCommand。
这是我的代码:
string timeStampStr = timeStamp.ToString("yyyy-MM-dd hh:mm:ss");
...
MySqlCommand cmd = new MySqlCommand("SELECT COUNT(*) FROM plc WHERE plc.last_communication < @timeThreshold AND plc.id = @plcId", _conn);
cmd.Parameters.AddWithValue("@timeThreshold", timeStampStr); // Is this correct ? timeStampStr is a string
cmd.Parameters.AddWithValue("@plcId", plcId);
object result = cmd.ExecuteScalar();谢谢!
发布于 2014-09-16 12:29:02
您最好的选择可能是启用查询日志 on MySQL并使用它来分析发送到数据库引擎的内容。
这是因为应用程序代码实际上并不用参数值替换占位符,而是数据库引擎。应用程序代码调用参数化查询并同时提供参数。(作为副作用,这允许数据库引擎更有效地缓存参数化查询的执行计划,因为查询本身不会改变。这在对级联值使用参数化查询时提供了轻微的性能改进。)
即使使用cmd.ToString(),我也得到了以下无意义的信息: MySql.Data.MySqlClient.MySqlCommand。
这不是胡说八道,这是您在其中调用.ToString()的类的名称。对于引用类型,.ToString()的默认行为是返回类型的名称,除非您重写它。
https://stackoverflow.com/questions/25868557
复制相似问题