2015-10-02 4 views
1

Я пытаюсь искать данные в моей MySQL таблице ...VB.NET MySQL - DataTable возвращает пустую строку, а дб нет данных

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 не имеет данные.

Что мне делать?

ответ

2

ничего ничего удивительного о результате.

Запрос на агрегирование без group byвсегда возвращает одну строку. Если все строки отфильтровываются, то большинство функций агрегации возвращают NULL, хотя COUNT() и COUNT(DISTINCT) возвращают 0.

Это стандартное поведение и как работают все базы данных. На самом деле это довольно удобно при некоторых обстоятельствах.

EDIT:

Если вы хотите, поведение которых не возвращаются нет строк, просто добавьте group by:

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

Спасибо Гордон. Я понял. Спасибо за ответ. – Raj

Смежные вопросы