如何从Visual Basic.Net调用表值函数以及如何存储结果

时间:2011-11-04 13:40:05

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

在我的VB.net代码中,我有:

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

该函数(SQL Server上的runnig)返回一个包含四列,一行的表。

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

2 个答案:

答案 0 :(得分:3)

你想做这样的事情:

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中的类型。

答案 1 :(得分:1)

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

    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)

数据表包含一组包含数据的行。