sql-server - VB.NET --- 如何高效地从 SQL Server 查询中获取二维数组结果?

标签 sql-server vb.net multidimensional-array

我正在尝试创建一个通用查询执行器函数。我希望能够向它发送一个查询字符串并让它返回一个包含结果的二维数组。下面是我的代码,说明如何使用 (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/

相关文章:

.net - 当 Sql Server 中的数据发生更改时,有没有办法在 .NET 中收到通知?喜欢一个事件吗?

python - 无法从 Windows 上的 Python 连接到 MSSQL Server

wpf - 了解 MVVM 中的模型和 View 模型

c - 在 C 中使用指针打印数组的值

c++ - 如何在不对行和列使用两个 for 循环的情况下,在 C++ 的 vector 数据结构中获取用户输入的二维数组

sql - 如何在 UPDATE 语句上创建一个循环,该循环一直工作到没有行可供更新为止?

java - 如何通过个人设置安装 MySQL 或 MsSQL

c# - 从谷歌浏览器当前标签获取当前 html

vb.net - 如何只比较日期部分而不是两个日期的时间?

java - 添加 4x4 数组的对角线