VB.NET MySQL - 数据表返回空行,而db没有数据

时间:2015-10-02 21:27:47

标签: mysql vb.net

我正在尝试搜索MySQL表中的数据...

Dim cmd As New MySqlCommand
Dim qry As String = "SELECT SUM(amt) FROM fee_payment WHERE roll_no='" + st_roll + "' AND course='" + c_id + "'"
cmd.Connection = conn
cmd.CommandText = qry

Dim dt As New DataTable
Dim dadapter As New MySqlDataAdapter
dadapter.SelectCommand = cmd
dadapter.Fill(dt)
If dt.Rows.Count > 0 Then
    Dim dr As MySqlDataReader = cmd.ExecuteReader
    While dr.Read
        Dim t_paid = dr("SUM(amt)")
        TbDue.Text = tot_fees - t_paid
    End While
    dr.Close()
End If

令人惊讶的是,上述dt.Rows.Count返回1,而表fee_payment没有数据。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

没有对结果感到惊讶。

没有group by 的聚合查询总是返回一行。如果过滤掉所有行,则大多数聚合函数返回NULL,但COUNT()COUNT(DISTINCT)返回0

这是标准行为以及所有数据库的工作方式。在某些情况下,它实际上非常方便。

编辑:

如果您想要返回 no 行的行为,只需添加group by

SELECT SUM(amt)
FROM fee_payment
WHERE roll_no = '" + st_roll + "' AND course = '" + c_id + "'
GROUP BY roll_no, course;