2011-11-04 121 views
2

在我VB.net代碼,我有:如何調用表值函數從Visual Basic.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中的等價物是什麼?有沒有人有一個簡短的例子?

回答

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() 

如果您使用基於返回的字段的順序上的索引值,它在獲取類型。

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 [email protected]", conn) 
    da.SelectCommand.Parameters.AddWithValue("@CustomerId", custId) 
    Dim ds As DataSet = New DataSet 
    da.Fill(ds) 
    Dim dt As DataTable = ds.Tables(0) 

該數據表具有包含您的數據的行集合。

相關問題