Sql server 获取VB.NET中SQL Server表中的行数
Sql server 获取VB.NET中SQL Server表中的行数,sql-server,vb.net,ado.net,Sql Server,Vb.net,Ado.net,小学学生表中有10行 当我执行以下代码时,结果是-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.Clos
小学学生表中有10行
当我执行以下代码时,结果是-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()
上面的代码有什么问题?您应该使用
ExecuteScalar()
而不是ExecuteNonQuery()
,因为您正在获取一个值
count = Convert.ToInt16(cmd.ExecuteScalar())
MsgBox(count.ToString())
- 使用
使用
语句进行适当的对象处理
- 使用
块正确处理异常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 cmd As New SqlCommand()
With cmd
.Connection = conn
.CommandText = query
.CommandType = CommandType.Text
End With
Try
conn.Open()
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
您应该使用
ExecuteScalar()
而不是ExecuteNonQuery()
,因为您正在获取一个值
count = Convert.ToInt16(cmd.ExecuteScalar())
MsgBox(count.ToString())
- 使用
使用
语句进行适当的对象处理
- 使用
块正确处理异常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 cmd As New SqlCommand()
With cmd
.Connection = conn
.CommandText = query
.CommandType = CommandType.Text
End With
Try
conn.Open()
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
解决办法是替换
count = cmd.ExecuteNonQuery
与
正如罗伯特·博比恩(Robert Beaubien)在评论中所说的那样,解决办法是更换
count = cmd.ExecuteNonQuery
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=localhost;userid=root;password=1234;database=dblms"
Dim READER As MySqlDataReader
Try
MysqlConn.Open()
Dim Query As String
Query = "Select * from dblms.accounts"
COMMAND = New MySqlCommand(Query, MysqlConn)
READER = COMMAND.ExecuteReader
Dim count As Integer
count = 0
While READER.Read
count = count + 1
End While
MysqlConn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
与
就像罗伯特·比恩在评论中说的那样
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=localhost;userid=root;password=1234;database=dblms"
Dim READER As MySqlDataReader
Try
MysqlConn.Open()
Dim Query As String
Query = "Select * from dblms.accounts"
COMMAND = New MySqlCommand(Query, MysqlConn)
READER = COMMAND.ExecuteReader
Dim count As Integer
count = 0
While READER.Read
count = count + 1
End While
MysqlConn.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
count中的值将是表中的行数:)希望这有所帮助
count中的值将是表中的行数:)希望这有帮助。离题,但仍然是一个潜在问题:在使用完
cmd
和con
后,您没有调用Dispose
。2.Int16
没有问题,但是在VB.NET中,您通常会使用关键字Short
来引用该类型。3.理想情况下,您应该在最晚可能的时刻调用con.Open()
,即在执行命令之前;i、 e.一般来说,尽量在尽可能短的时间内保持连接打开。除了491243提到的问题外,count(*)
和count(row)
可以产生不同的结果。1。离题,但仍然是一个潜在问题:在使用完cmd
和con
后,您没有调用Dispose
。2.Int16
没有问题,但是在VB.NET中,您通常会使用关键字Short
来引用该类型。3.理想情况下,您应该在最晚可能的时刻调用con.Open()
,即在执行命令之前;i、 e.一般来说,尽量在最短的时间内保持连接打开。除了491243提到的问题外,count(*)
和count(row)
可以产生不同的结果。谢谢。无意冒犯,有没有其他编码更少的技术?你为什么要这样做?我的项目需要它。我只是一个初学者,我不能完全理解这个答案。shbabu向你展示了正确的方法,1)获取你想要的信息,2)检测错误何时发生。对原始代码的更改只是使用ExecuteScalar()而不是ExecuteOnQuery()。如果您不理解代码的其余部分,请提出特定的问题,通常会有人提供帮助。谢谢。无意冒犯,有没有其他编码更少的技术?你为什么要这样做?我的项目需要它。我只是一个初学者,我不能完全理解这个答案。shbabu向你展示了正确的方法,1)获取你想要的信息,2)检测错误何时发生。对原始代码的更改只是使用ExecuteScalar()而不是ExecuteOnQuery()。如果您不理解代码的其余部分,请提出特定的问题,通常会有人提供帮助。