gpt4 book ai didi

sql-server - 向存储过程发送参数 vb.net

转载 作者:行者123 更新时间:2023-12-01 23:18:21 24 4
gpt4 key购买 nike

你好,这是我在 vb.net 中使用 MS visual studio 2010 的第一个项目,我想创建一个可以将参数发送到 transact-sql 数据库中的存储过程的类,我知道如何在 vb 6 中执行此操作,但我我不确定在这里这样做是否正确。

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

我的一些疑问是:

我真的需要在每次调用类的方法时都打开数据库吗?

sqlAdapter 和 Dataset 真的需要吗?在 vb 6 中,您可以在附加参数后执行类似“命令执行插入”的操作,然后就完成了。

最佳答案

如果您只是读取数据,请查看 SqlDataReader:

Dim reader As SqlDataReader
reader = cmd.ExecuteReader()
While reader.Read
//Do stuff with reader
End While

如果您正在进行更新或插入,那么您可以使用 SqlCommand 类的 ExecuteNonQuery() 方法。

SqlCommand有一个加参数的简写:

cmd.Parameters.AddWithValue("@MyParamName", myParamValue)

您可能会觉得有用。

是的,您应该在每次需要与数据库交互时打开和关闭数据库连接。阅读 Using 语句,这将帮助您巧妙而巧妙地完成这项工作。

关于sql-server - 向存储过程发送参数 vb.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com