关于从存储过程中取数的问题
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim myReader As SqlDataReader
Dim myPrm As SqlParameter()
Dim lngRows As Long
Dim lngErrCode As Long
Dim i As Integer, j As Integer
conn = New SqlConnection(connDbStr)
conn.Open()
cmd = New SqlCommand("test", conn)
With cmd
.CommandType = CommandType.StoredProcedure
.CommandTimeout = 0
.Connection = conn
.Parameters.Add("@v", SqlDbType.Int).Value = 1
.Parameters.Add("@lngErrCode", SqlDbType.Int)
.Parameters("@lngErrCode").Direction = ParameterDirection.Output
.Parameters.Add("@Rows", SqlDbType.Int)
.Parameters("@Rows").Direction = ParameterDirection.Output
End With
----------------------------------------------------------------
上面代码表示打开SQL SERVER的一个存储过程test,三个参数:@v,@lngErrCode和@Rows,其中@lngErrCode和@Rows需要返回值
目的:我想要该存储过程将返回一个纪录集和两个参数@lngErrCode和@Rows,看下面代码:
'-------返回值-----------------------------
i = cmd.ExecuteNonQuery
lngErrCode = cmd.Parameters("@lngErrCode").Value
lngRows = cmd.Parameters("@Rows").Value
'-------获取数据集----------------------------
myReader = cmd.ExecuteReader()
myReader.Read()
……
现在的问题是:
i = cmd.ExecuteNonQuery
和
myReader = cmd.ExecuteReader()
不是要两次打开数据库吗?能不能打开一次数据就把参数返回值和纪录集都抓取过来呢?这在VB6时代不是问题,但在VB.net中我不知怎么写了,兄弟们帮忙看看