为什么MysqlCommand.ExecuteScalar返回System.NullReferenceException

时间:2015-06-17 15:33:29

标签: mysql vb.net

我在VB 2013项目中使用MySQL。我正在尝试获取运行

的表中的记录数
Dim SQLstr As String = "SELECT COUNT(*) FROM lieferantenartikel WHERE LiefID=1 AND LfAIDLief=1"
Dim CheckExist As New MySqlCommand(SQLstr, New MySqlConnection(strConn))
Try
    Dim recEx As Integer = CheckExist.ExecuteScalar()
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

根据定义,COUNT(*)应返回标量数,即如果不存在记录则为0,否则为任何其他正数。

但是我收到了System.NullReferenceException。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我有类似的问题。当表没有条目时就会发生这种情况。您可以使用" ISNULL"进行解决方法。但也许有更好的方法。

答案 1 :(得分:0)

事实上,当我使用开放连接而不是连接对象时,问题就出现了问题!谢谢你,plutonix。我显然在文档中监督了连接必须是开放的。

所以现在是正确的代码:

Dim SQLstr As String = "SELECT COUNT(*) FROM lieferantenartikel WHERE LiefID=1 AND LfAIDLief=1"
Dim cConn as New MySqlConnection(strConn)
cConn.Open()
Dim CheckExist As New MySqlCommand(SQLstr, cConn)
Try
    Dim recEx As Integer = CheckExist.ExecuteScalar()
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

非常感谢您的快速帮助!e