【问题标题】:How to call a table valued function from Visual Basic.Net and how to store the result如何从 Visual Basic.Net 调用表值函数以及如何存储结果
【发布时间】:2011-11-04 13:40:05
【问题描述】:

在我的 VB.net 代码中:

    cmd.CommandText = "SELECT * FROM [strfg].[dbo].[Myfunc] (@MyParam)"
    Dim myparam As New SqlParameter("@MyParam", a)
    cmd.Parameters.Add(myparam)

该函数(在 SQL 服务器上运行)返回一个包含四列一行的表。

如何从 Visual Basic 调用此函数? cmd.ExecuteScalar() 显然不正确。在 C++ 中,我使用记录集。 vb中的等价物是什么?谁有一个简短的例子?

【问题讨论】:

    标签: sql-server vb.net ado.net


    【解决方案1】:

    你想做这样的事情:

    Dim reader As SqlDataReader= cmd.ExecuteReader
    Dim MyList as new List(Of WhateverObject)
    Do While reader.Read
        Dim obj as new WhateverObj
        obj.Property1 = Reader.GetInt32(0)
        obj.Property2 = Reader.GetString(1)
        MyList.add(obj)
    Loop
    
    reader.Close()
    cmd.Dispose()
    

    根据返回字段的顺序及其在 Get 中的类型使用索引值的位置。

    【讨论】:

      【解决方案2】:

      如果您想要类似于记录集的内容,请考虑使用数据表。您的代码可能如下所示:

          Dim custId As String = "ALFKI"
      
          Dim conn As New SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=True")
          Dim da As New SqlDataAdapter("SELECT * FROM Customers Where CustomerId=@CustomerId", conn)
          da.SelectCommand.Parameters.AddWithValue("@CustomerId", custId)
          Dim ds As DataSet = New DataSet
          da.Fill(ds)
          Dim dt As DataTable = ds.Tables(0)
      

      数据表有一个包含您的数据的行集合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2019-10-23
        • 1970-01-01
        • 2021-07-03
        相关资源
        最近更新 更多