2011-11-04 2 views
2

Dans mon code VB.net j'ai:Comment appeler une fonction table à partir de Visual Basic.Net et comment stocker le résultat

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

La fonction (Runnig sur le serveur SQL) retourne une table avec quatre colonnes, une rangée. Comment j'appelle cette fonction à partir de Visual Basic?

Comment? cmd.ExecuteScalar() n'est évidemment pas correct. En C++ j'utilise un jeu d'enregistrements. Quel est l'équivalent en vb? Quelqu'un at-il un petit exemple?

Répondre

3

Vous voulez faire quelque chose comme ceci:

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

Si vous utilisez la valeur de l'indice en fonction de l'ordre des champs retournés, et son type dans le Get.

1

Si vous voulez quelque chose qui est similaire à un jeu d'enregistrements, pensez à utiliser un datatable. Votre code peut ressembler à:

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) 

La datatable possède une collection de lignes qui contient vos données.

Questions connexes