将查询计数存储在vb变量中

时间:2018-09-17 04:49:57

标签: database vb.net

我一直在尝试如何使用数据库,但是我不熟悉将查询结果存储在变量中等方面。我使用此代码片段查询了一条以上记录的数据库,但我得到的结果始终为零。有人可以解释这是如何工作的吗?这是我的摘录...

str = "SELECT COUNT(Nickname) FROM Backup"
cmd.CommandText = str
cmd.Connection = myConn
myConn.Open()
cntPlns = cmd.ExecuteNonQuery()
MessageBox.Show(cntPlns.ToString)

存在连接,但是我的结果总是为零...感谢任何建议。

2 个答案:

答案 0 :(得分:2)

有关{nonquery是错误的cmd,请参见ExecuteNonQuery doesn't return results

尝试一下>>

str = "SELECT COUNT(Nickname) as myCount FROM Backup"
cmd.CommandText = str
cmd.Connection = myConn
myConn.Open()
Using cntPlns As SqlDataReader = command.ExecuteReader
        If cntPlns.Read Then
             MessageBox.Show(cntPlns.GetInt32(0).ToString)  ' the first column
        End If
End Using

答案 1 :(得分:1)

您应该呼叫ExecuteScalar,而不是ExecuteNonQueryExecuteNonQuery用于执行非查询,即不产生结果集的SQL语句。 ExecuteScalar用于执行查询并检索标量(即单个值),该标量来自结果集第一行的第一列,无论该结果集是否包含更多数据。

对于记录,您每次都会得到零,因为ExecuteNonQuery返回受SQL语句影响的行数,其中受影响的均值已更改。 SELECT语句不影响任何行,因此正确的结果为零。

检查我的ADO.NET examples以便了解何时何地使用哪些对象和成员可能会很好。