Ran*_*ser 5 vb.net sql-server ado.net
有10行primary_student_table.
当我执行以下代码时,结果为-1.
Dim count As Int16
con.Open()
query = "SELECT COUNT(roll) AS rollcount FROM primary_student_table WHERE admityear = 2011 AND batch = 1 "
cmd = New SqlCommand(query, con)
count = cmd.ExecuteNonQuery
MsgBox(count)
con.Close()
Run Code Online (Sandbox Code Playgroud)
上面的代码有什么问题?
Joh*_*Woo 12
您应该使用ExecuteScalar()而不是ExecuteNonQuery()因为您正在获取值.
count = Convert.ToInt16(cmd.ExecuteScalar())
MsgBox(count.ToString())
Run Code Online (Sandbox Code Playgroud)
为了正确编码
using声明进行适当的对象处理try-catch块来正确处理异常示例代码:
Dim connStr As String = "connection string here"
Dim query As String = "SELECT COUNT(roll) AS rollcount FROM primary_student_table WHERE admityear = 2011 AND batch = 1"
Using conn As New SqlConnection(connStr)
Using comm As New SqlCommand()
With comm
.Connection = conn
.CommandText = query
.CommandType = CommandType.Text
End With
Try
Dim count As Int16 = Convert.ToInt16(cmd.ExecuteScalar())
MsgBox(count.ToString())
Catch(ex As SqlException)
' put your exception here '
End Try
End Using
End Using
Run Code Online (Sandbox Code Playgroud)
解决办法是更换
count = cmd.ExecuteNonQuery
Run Code Online (Sandbox Code Playgroud)
和
count = cmd.ExecuteScalar
Run Code Online (Sandbox Code Playgroud)
正如罗伯特·博比恩在他的评论中所说