Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MysqlCommand.ExecuteScalar返回System.NullReferenceException_Mysql_Vb.net - Fatal编程技术网

为什么MysqlCommand.ExecuteScalar返回System.NullReferenceException

为什么MysqlCommand.ExecuteScalar返回System.NullReferenceException,mysql,vb.net,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.

我正在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。我做错了什么?

我也有类似的问题。当一个表没有条目时,就会发生这种情况。您可以使用“ISNULL”进行变通。但也许有更好的办法

我也有类似的问题。当一个表没有条目时,就会发生这种情况。您可以使用“ISNULL”进行变通。但也许有更好的办法

事实上,当我使用打开的连接而不是连接对象时,问题已经解决了!谢谢你,普卢蒂克斯。很明显,我在文档中监督了连接必须是开放的

因此,相应的代码现在是:

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

非常感谢您的快速帮助!事实上,当我使用打开的连接而不是连接对象时,问题已经解决了!谢谢你,普卢蒂克斯。很明显,我在文档中监督了连接必须是开放的

因此,相应的代码现在是:

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

该错误可能是由于其中一个连接或命令对象为
Nothing
。将连接存储为对象变量,以便可以使用调试器检查所有连接。此外,创建一个连接也不会打开它。Puropolix是正确的。如果这没有帮助,请尝试为我们提供ex.ToString的stacktrace。错误的可能重复可能是由于某个连接或命令对象为
Nothing
。将连接存储为对象变量,以便可以使用调试器检查所有连接。此外,创建一个连接也不会打开它。Puropolix是正确的。如果这没有帮助,请尝试为我们提供ex.ToString的stacktrace。错误的可能重复可能是由于某个连接或命令对象为
Nothing
。将连接存储为对象变量,以便可以使用调试器检查所有连接。此外,创建一个连接也不会打开它。Puropolix是正确的。如果这没有帮助,请尝试给我们ex.ToString的堆栈跟踪可能重复的
DBNull
Nothing
不同。OP得到的是一个NRE,这意味着正在使用的对象无效,
DBNull
意味着数据丢失。抱歉,标准具:当一个表没有条目时,计数为0,这与DBNull不同,这就是为什么使用计数如此吸引人,因为您得到的是您所要求的确切答案,即有多少行。它永远不会返回DBNull。
DBNull
Nothing
不是一回事。OP得到的是一个NRE,这意味着正在使用的对象无效,
DBNull
意味着数据丢失。抱歉,标准具:当一个表没有条目时,计数为0,这与DBNull不同,这就是为什么使用计数如此吸引人,因为您得到的是您所要求的确切答案,即有多少行。它永远不会返回DBNull。
DBNull
Nothing
不是一回事。OP得到的是一个NRE,这意味着正在使用的对象无效,
DBNull
意味着数据丢失。抱歉,标准具:当一个表没有条目时,计数为0,这与DBNull不同,这就是为什么使用计数如此吸引人,因为您得到的是您所要求的确切答案,即有多少行。它永远不会返回DBNull。