【问题标题】: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)
数据表有一个包含您的数据的行集合。