Paramètres d'envoi de procédures stockées vb.net

Bonjour mon premier projet en vb.net travailler avec ms visual studio 2010, je veux créer une classe qui peut envoyer des paramètres à des procédures stockées dans une instruction transact-sql base de données, je sais comment le faire en vb 6, mais je ne suis pas sûr si ce la bonne manière de le faire ici.

Imports System.Data.SqlClient
Public Class ClsLineas
Public Sub Inserta(ByVal GridLineas As DataGrid, _
ByVal numero As String, _
ByVal tipo As String, _
ByVal estado As String, _
ByVal anexo As Integer, _
ByVal fechaInicio As String, _
ByVal fechaFin As String, _
ByVal pcReg As String, _
ByVal observaciones As String, _
ByVal usuReg As String)
Dim cnx As SqlConnection = New SqlConnection(ClsCon.connectionString)
'ClsCon.connectionString is a class that contains the connection string 
Dim cmd As SqlCommand = New SqlCommand()
If cnx.State = ConnectionState.Closed Then cnx.Open()
cmd.Connection = cnx
cmd.CommandText = "SP_INSERTA_LINEA"
cmd.CommandType = CommandType.StoredProcedure
Dim prm As New SqlParameter
prm.ParameterName = "@TIPO"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 30
prm.Direction = ParameterDirection.Input
prm.Value = tipo
cmd.Parameters.Add(prm)
prm.ParameterName = "@FECHA_INICIO"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 30
prm.Direction = ParameterDirection.Input
prm.Value = fechaInicio
cmd.Parameters.Add(prm)
prm.ParameterName = "@FECHA_FIN"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 30
prm.Direction = ParameterDirection.Input
prm.Value = fechaFin
cmd.Parameters.Add(prm)
prm.ParameterName = "@ESTADO"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 30
prm.Direction = ParameterDirection.Input
prm.Value = estado
cmd.Parameters.Add(prm)
prm.ParameterName = "@NUMERO"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 15
prm.Direction = ParameterDirection.Input
prm.Value = numero
cmd.Parameters.Add(prm)
prm.ParameterName = "@ANEXO"
prm.SqlDbType = SqlDbType.Int
prm.Direction = ParameterDirection.Input
prm.Value = anexo
cmd.Parameters.Add(prm)
prm.ParameterName = "@PC_REG"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 50
prm.Direction = ParameterDirection.Input
prm.Value = pcReg
cmd.Parameters.Add(prm)
prm.ParameterName = "@USU_REG"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 50
prm.Direction = ParameterDirection.Input
prm.Value = usuReg
cmd.Parameters.Add(prm)
prm.ParameterName = "@OBSERVACIONES"
prm.SqlDbType = SqlDbType.NVarChar
prm.Size = 1000
prm.Direction = ParameterDirection.Input
prm.Value = observaciones
cmd.Parameters.Add(prm)
prm.ParameterName = "@ID"
prm.SqlDbType = SqlDbType.Int
prm.Direction = ParameterDirection.Output
cmd.Parameters.Add(prm)
Dim adp As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim DataSet As DataSet = New DataSet("Lineas")
adp.Fill(DataSet)
GridLineas.DataSource = DataSet.Tables(0)
End Sub
End class

Certains de mes doutes sont:

Ai-je vraiment besoin d'ouvrir la base de données chaque fois que j'appelle les méthodes de ma classe?

Sont les sqlAdapter et Dataset vraiment nécessaire? Dans visual basic 6, vous pourriez faire quelque chose comme de la commande "exécuter inserta" après l'ajout des paramètres et de vous en fait.

Vous êtes à l'ouverture d'un connexion ce n'est pas une base de données, et oui, cela doit être fait. Comme pour DataSet et DataAdepter - dépend de ce que vous faites.

OriginalL'auteur Diego | 2012-10-22