我正在尝试创建一个通用查询执行器函数。我希望能够向它发送一个查询字符串并让它返回一个包含结果的二维数组。下面是我的代码,说明如何使用 (9,x) 数组执行此操作。如何使用 (y,x) 大小的数组来做到这一点?另外,我觉得必须有一种更有效的方法来做到这一点......
Dim right As Integer = 0
dbConn = New SqlConnection("hidden for security purposes")
MyCommand = New SqlCommand(queryString, dbConn)
dbConn.Open()
Dim resultArray(9, 0) As String
MyDataReader = MyCommand.ExecuteReader()
While (MyDataReader.Read())
For i = 0 To 9
If IsDBNull(MyDataReader(i)) Then
'resultArray(i, UBound(resultArray, 2)) = ""
Else
resultArray(i, UBound(resultArray, 2)) = MyDataReader(i)
End If
Next
ReDim Preserve resultArray(9, UBound(resultArray, 2) + 1)
End While
ReDim Preserve resultArray(9, UBound(resultArray, 2) - 1)
MyDataReader.Close()
dbConn.Close()
Return resultArray
最佳答案
尝试这样的事情:
Public Function GetData(ByVal queryString As String, ByVal addParameters As Action(Of SqlParameterCollection) As DataTable
Dim result As New DataTable()
Using cn As New SqlConnection(" connection string "), _
cmd As New SqlCommand(queryString, cn)
addParameters(cmd.Parameters)
cn.Open()
Using rdr As SqlCommand.ExecuteReader()
result.Load(rdr)
End Using
End Using
Return result
End Function
对于不带参数的查询,可以这样调用:
Dim result = GetData("Select * from Table", Sub(p) Exit Sub)
或者如果你有参数:
Dim result = GetData("Select * from Table Where ID= @ID", _
Sub(p)
p.Add("@ID", SqlDbType.Int).Value = 12345
End Sub)
关于sql-server - VB.NET --- 如何高效地从 SQL Server 查询中获取二维数组结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982147/