在我的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中的等价物是什么?有没有人有一个简短的例子?
答案 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)
数据表包含一组包含数据的行。