【发布时间】:2020-09-28 14:44:48
【问题描述】:
当我的 SQL 查询在查询中有计数函数时,它不想在 DBGRID 中显示数据,并且我收到“MySqlException was unhandled”错误。一旦我删除了 count 函数,它就会顺利运行并在 DB 网格上显示数据。
代码如下:
Dim connection As New MySqlConnection("Server info")
Dim cmd As New MySqlCommand("SELECT COUNT(a.client_id), a.CLIENT_ID,b.c_name, b.C_surname FROM tblinv_info a JOIN tblclientinfo b ON a.CLIENT_ID = b.CLIENT_ID WHERE extract(year from a.inv_date) in ('2018','2019') AND a.Client_id = b.Client_id GROUP BY a.client_id ORDER BY count(a.client_id) desc LIMIT 10", connection)
cmd.CommandTimeout = 500
Dim adapter As New MySqlDataAdapter(cmd)
Dim table As New DataTable()
adapter.Fill(table)
dbreport.DataSource = table
知道为什么会发生这种情况吗?我正在使用 VB.NET 和 MySql 数据库在 Visual Studio 编码中运行该程序。 SQL 命令在 localhost 数据库上运行良好。
错误:错误代码如下:MySql.Data.dll中发生'MySql.Data.MySqlClient.MySqlException'类型的未处理异常
附加信息:尝试读取结果集时遇到致命错误。
【问题讨论】:
-
如果你使用 count 你需要按所有选定的字段分组
-
如上述评论所示,您当前的查询无效。您需要修复查询方面的帮助,还是在您的 VB.net 代码中添加 try-catch 逻辑以处理当前查询?
-
非常感谢您的反馈。我只是假设在 localhost 数据库上显示正确的结果是正确的。我会看看是否可以通过添加 group by 子句来修复我的查询
-
@AndrichPienaar 您应该始终在查询编辑器中运行您的 SQL。当它实际运行时,然后在代码中尝试