Soy nuevo en las declaraciones preparadas en vb.net y Microsoft SQL Server 2008. Realmente no puedo encontrar ninguna buena fuente para conectarme a una base de datos a través de una cadena de conexión y ejecutar declaraciones preparadas. ¿Podría alguien mostrarme un ejemplo o señalarme un recurso que podría ser útil?Declaraciones preparadas en VB.NET
5
A
Respuesta
4
Las declaraciones preparadas no son más que comandos sql parametrizados encerrados en una transacción.
Por ejemplo, esta es una declaración preparada:
Using c As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
c.Open()
using mytransaction = c.BeginTransaction()
Dim command = New SqlCommand("INSERT INTO yourtable(image) values (@image)", c)
''# this is specific to the FileUploadControl but the idea is to get the
''#image in a byte array; however you do it, it doesn't matter
Dim buffer(FileUpload1.PostedFile.ContentLength) As Byte
FileUpload1.PostedFile.InputStream.Read(buffer, 0, buffer.Length)
command.Parameters.AddWithValue("@image", buffer)
command.ExecuteNonQuery()
mytransaction .Commit()
End Using
End Using
6
Aquí hay un código ejemplo rápido:
Using cn As New SqlConnection("your connection string here"), _
cmd AS New SqlCommand("SELECT * FROM Table WHERE ID= @ID", cn)
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 12345
cn.Open()
Using rdr As SqlDataREader = cmd.ExecuteReader()
While rdr.Read()
'Do something with the record
End While
rdr.Close()
End Using
End Using
Por supuesto es necesario importar System.Data y System.Data.SqlClient.
0
Dim datOleReader As SqlDataReader
' Public con As New SqlConnection
Public Function CHECK_CONNECTION(ByVal CON As SqlConnection) As SqlConnection
Try
If CON.State = ConnectionState.Broken Or CON.State = ConnectionState.Closed Then
CON.Open()
End If
Catch ex As Exception
CON.Close()
CON.Open()
End Try
Return CON
End Function
Public Function gGetMaxCode(ByVal strTable As String, ByVal strCode As String) As Long
Dim cmdtext As New SqlCommand
Try
' con = clsexe.CHECK_CONNECTION(con) #
' cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = "SELECT ISNULL(MAX(" & strCode & "),0)+1 FROM " & strTable
datOleReader = cmdtext.ExecuteReader(CommandBehavior.SingleRow)
datOleReader.Read()
If datOleReader.IsDBNull(0) Then
Return 1
Else
Return datOleReader.Item(0)
End If
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
datOleReader.Close()
End Try
End Function
Public Function gGetMaxCode(ByVal strTable As String, ByVal strCode As String, ByVal trans As SqlTransaction) As Long
Dim cmdtext As New SqlCommand
Try
' con = clsexe.CHECK_CONNECTION(con) #
' cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = "SELECT ISNULL(MAX(" & strCode & "),0)+1 FROM " & strTable
cmdtext.Transaction = trans
datOleReader = cmdtext.ExecuteReader(CommandBehavior.SingleRow)
datOleReader.Read()
If datOleReader.IsDBNull(0) Then
Return 1
Else
Return datOleReader.Item(0)
End If
Catch ex As Exception
Throw ex
Finally
datOleReader.Close()
End Try
End Function
Public Function ExecuteQry(ByVal qry As String) As Boolean
Dim cmdtext As New SqlCommand
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.Text
cmdtext.ExecuteNonQuery()
cmdtext.Dispose()
cmdtext = Nothing
ErrCode = True
Catch ex As Exception
'gErrMsg()
ErrCode = False
MsgBox(ex.Message.ToString)
Finally
'con.Close()
End Try
End Function
Public Function ExecuteQry(ByVal qry As String, ByVal trans As SqlTransaction) As Boolean
Dim cmdtext As New SqlCommand
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.Text
cmdtext.Transaction = trans
cmdtext.ExecuteNonQuery()
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
Throw ex
'gErrMsg()
MsgBox(ex.Message.ToString)
Finally
'con.Close()
End Try
End Function
Public Function ExecuteSelect(ByVal qry As String, ByVal trans As SqlTransaction) As SqlDataReader
Dim cmdtext As New SqlCommand
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.Text
cmdtext.Transaction = trans
ExecuteSelect = cmdtext.ExecuteReader()
Return ExecuteSelect
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
Throw ex
'MsgBox(ex.Message.ToString)
Finally
'clsexe.ExecuteSelect.Close()
'con.Close()
End Try
End Function
Public Function Executescalar(ByVal qry As String, ByVal trans As SqlTransaction)
Dim cmdtext As New SqlCommand
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.Text
cmdtext.Transaction = trans
Executescalar = cmdtext.ExecuteScalar
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
Throw ex
' MsgBox(ex.Message.ToString)
Finally
' con.Close()
End Try
End Function
Public Function ExecuteAdapter(ByVal qry As String, ByVal trans As SqlTransaction) As SqlDataAdapter
Dim cmdtext As New SqlCommand
Dim da As New SqlDataAdapter
Try
'con = cls.cnn #
'cmdtext.Connection = con
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandTimeout = 0
cmdtext.CommandText = qry
cmdtext.Transaction = trans
cmdtext.CommandType = CommandType.Text
da.SelectCommand = cmdtext
Return da
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
Throw ex
'MsgBox(ex.Message.ToString)
Finally
' con.Close()
End Try
End Function
Public Function Executedataset(ByVal qry As String) As DataSet
Dim cmdtext As New SqlCommand
Dim ds As New DataSet
Dim da As New SqlDataAdapter
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.Text
da.SelectCommand = cmdtext
da.Fill(ds)
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Function
Public Function ExecuteProcedure(ByVal qry As String) As Boolean
Dim cmdtext As New SqlCommand
Try
'con = cls.cnn #
'cmdtext.Connection = con #
cmdtext.Connection = CHECK_CONNECTION(con) ' #
cmdtext.CommandText = qry
cmdtext.CommandType = CommandType.StoredProcedure
cmdtext.ExecuteNonQuery()
cmdtext.Dispose()
cmdtext = Nothing
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Function
+3
¿Podría agregar más detalles aquí, por favor? Si bien puedo apreciar el ejemplo, una explicación de algunas piezas sería agradable. –
Cuestiones relacionadas
- 1. Recursividad en declaraciones preparadas
- 2. mysql declaraciones preparadas permanentemente
- 3. Cierre de declaraciones preparadas
- 4. ¿Inyecciones SQL con declaraciones preparadas?
- 5. declaraciones preparadas sqlite - cómo depurar
- 6. ¿Cómo funcionan las declaraciones preparadas?
- 7. Declaraciones preparadas MySQLi error reporting
- 8. Declaraciones preparadas de PHP PDO
- 9. Declaraciones preparadas y controladores JDBC
- 10. ¿Cuándo * no * usar declaraciones preparadas?
- 11. Consultas con declaraciones preparadas en Android?
- 12. Spring NamedParameterJDBCTemplate reutilización de las declaraciones preparadas
- 13. Declaraciones preparadas junto con Connection Pooling
- 14. Uso de declaraciones preparadas con JDBCTemplate
- 15. PDO, Mysql y declaraciones preparadas nativas
- 16. declaraciones preparadas de mysqli y mysqli_real_escape_string
- 17. Declaraciones preparadas MySQLi con el operador IN
- 18. Son declaraciones preparadas compatibles con MySQL incorporado
- 19. ¿Es necesario mysql_real_escape_string() al usar declaraciones preparadas?
- 20. ¿Las declaraciones preparadas ralentizan notablemente el programa?
- 21. Declaraciones y transacciones preparadas de MySQL
- 22. Nombres de columnas variables usando declaraciones preparadas
- 23. ¿Cómo uso declaraciones preparadas en SQlite en Android?
- 24. ¿Qué tokens se pueden parametrizar en declaraciones preparadas con PDO?
- 25. En SQLite, ¿las declaraciones preparadas realmente mejoran el rendimiento?
- 26. Poniendo tiempos de espera en las declaraciones preparadas
- 27. ¿Hay inconvenientes en el uso de declaraciones preparadas?
- 28. C# Las declaraciones preparadas - símbolo @ (en/signo strudel) busca
- 29. PHP- insertando datos binarios en mysql usando declaraciones preparadas
- 30. ¿Cómo se utiliza en las cláusulas con mysqli declaraciones preparadas
Lo sentimos, pero ... creo que estás equivocado? No requieren una transacción y tienen beneficios en términos de permitir que el servidor reutilice el plan de ejecución. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx – Basic
@Basic lo que describió son procedimientos almacenados. Si bien todos los procedimientos almacenados son declaraciones preparadas, no todas las declaraciones preparadas son procedimientos almacenados. –
@ DavidSöderlund Soy consciente de ambos (de hecho, los documentos que he vinculado para analizar ambos). El punto que estaba tratando de hacer es que la respuesta de Icarus no parece ser precisa, por ejemplo, puedo compilar una declaración preparada, permitir que el servidor cree un plan de ejecución y luego volver a usarlo varias veces. Esta respuesta omite ese patrón por completo. – Basic