Usar Parámetros en procedimientos almacenados ( .NET y MySq

Perdon pero no entraba el titulo, este es el titulo ¿Sabes usar parámetros en procedimientos almacenados con .NET y MySQL?

Ok, sigamos, primero que nada un aviso:

>-- Si queres saber todo sobre programacion, software, sistemas operativos. Sewguime. ¡No lo dudes!

Continuamos con el post:

aquí pongo este trozo de conocimiento para todo aquel que necesite trabajar contra MySQL desde .NET. El código es muy fácil pasarlo a C# y otros asi que...

Aquí se puede ver desde cómo conectar con una base de datos MySQL (ya existe información) hasta como usar procedimientos almacenados pasándo parámetros. Para ello uso programación en Visual Basic .NET 2010, las librerías de MySQLConnector (http://www.mysql.com) y por supuesto MySQL.

Manos a la obra

Primero creamos un procedimiento almacenado en nuestra base de datos.



CREATE DEFINER=`root`@`localhost` PROCEDURE `mi_procedimiento`(IN mi_variable VARCHAR(15))

BEGIN

declare variable1 VARCHAR(15);

set variable1 = mi_variable;

select * from MiTabla where Cod_Tabla like variable1;

END


pasamos la variable de entrada (de entrada: "IN", de salida: OUT, ambas: INOUT [o algo así ;-)]) mi_variable que es un texto.

Ahora toca usar el procedimiento almacenado en la base de datos desde nuestra aplicación en Visual Basic .NET ¿Cómo? sencillo (lo sencillo que se hace cuando ya lo sabes jejeje)


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim conStr As String

conStr = "server=localhost;user id=root;password=passwd;database=basedatos"

Dim con As New MySqlConnection(conStr)

Try

con.Open()

Catch ex As Exception
'Código de captura de la excepción
End Try

Dim comando As New MySqlCommand("mi_procedimiento", con)

comando.CommandType = CommandType.StoredProcedure

Dim fila As MySqlDataReader

Dim p As New MySqlParameter("?mi_variable", MySql.Data.MySqlClient.MySqlDbType.VarChar)

p.Value = "root"

p.Direction = ParameterDirection.InputOutput

comando.Parameters.Add(p)

Try

fila = comando.ExecuteReader

While fila.Read

MsgBox(fila(0).ToString)

End While

fila.Close()

Catch ex As MySqlException

'Código de captura de la excepción

End Try

con.Close()

End Sub


El primer bloque consiste en conectar con la base de datos, creo que en este punto no hace falta explicar como se conecta con la base de datos porque es idéntica a cualquier otra conexión con bases de datos diferentes. Ahora toca crear el comando que va a llamar al procedimiento almacenado:


Dim comando As New MySqlCommand("mi_procedimiento", con)
comando.CommandType = CommandType.StoredProcedure



sencillo, ¿no? declaramos el objeto MySQLCommand y le decimos (2ª lïnea) que se trata de un procedimiento almacenado.

Ahora toca lo interesante: pasarle el parámetro (con lo sencillo que se hacía en SQLServer).


Dim p As New MySqlParameter("?mi_variable", MySql.Data.MySqlClient.MySqlDbType.VarChar)

p.Value = "root"

p.Direction = ParameterDirection.InputOutput

comando.Parameters.Add(p)


Muy importante: dar la dirección del parámetro de entrada/salida (en mi caso, y teniendo en cuenta mis escasos dummie-conocimientos, era la única manera de que funcionara). El resto es como lo demás, declaras y creas el objeto parámetro (1ª línea), especificando el parámetro y su tipo, darle un valor (2ª línea), especificar la dirección (3ª línea) y añadirselo al comando (última línea) porque si no esto no vale "pa ná".

El último bloque es como el resto, en mi caso un datareader captura el resultado y lo proceso mostrando el valor del primer campo.

El código completo:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim conStr As String

conStr = "server=localhost;user id=root;password=passwd;database=basedatos"

Dim con As New MySqlConnection(conStr)

Try

con.Open()

Catch ex As Exception
'Código de captura de la excepción
End Try

Dim comando As New MySqlCommand("mi_procedimiento", con)

comando.CommandType = CommandType.StoredProcedure

Dim fila As MySqlDataReader

Dim p As New MySqlParameter("?mi_variable", MySql.Data.MySqlClient.MySqlDbType.VarChar)

p.Value = "root"

p.Direction = ParameterDirection.InputOutput

comando.Parameters.Add(p)

Try

fila = comando.ExecuteReader

While fila.Read

MsgBox(fila(0).ToString)

End While

fila.Close()

Catch ex As MySqlException

'Código de captura de la excepción

End Try

con.Close()

End Sub


Espero que resulte muy útil para todo el mundo y nos ayude a crear amistad entre MySQL y .NET, que no todo fue un camino de rosas (hasta antes de MySQL Connector al menos). Y como decía un maestro: ahora, de ejercicio, hacerlo para C#, C++, etc. ;-)
Espacios de nombres usados en el código:

MySql.Data.MySqlClient (de la libreria MySQLConnector)

Eso es todo, saludos!

Fuente: elguille.info

Fuentes de Información - Usar Parámetros en procedimientos almacenados ( .NET y MySq

Dar puntos
20 Puntos
Votos: 2 - T!score: 10/10
  • 0 Seguidores
  • 5.377 Visitas
  • 8 Favoritos

1 comentario - Usar Parámetros en procedimientos almacenados ( .NET y MySq

@FrescoPaChomba Hace más de 3 años +1
Q laburo man q laburo!