Vous êtes sur la page 1sur 6

ADO.NET Y MySQL Rellenar un dataset con una consulta SQL y volcarlo a un DataGridView.

Se incluye una caja de texto para filtrar informacin. (VB.NET) Vamos a rellenar un dataset con una consulta de la siguiente manera: Nota: La variable dgv es nuestro control DataGridView. Dim sql As String Dim cn as MySqlConnection Dim cm As MySqlCommand Dim da As MySqlDataAdapter Dim ds as DataSet sql = "SELECT * FROM alumnos WHERE cursoAcademico=?curso" cn = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.open() cm = New MySqlCommand() cm.CommandText = sql cm.CommandType = CommandType.Text cm.Connection = cn cm.Parameters.Add("?curso", MySqlDbType.Int32) cm.Parameters("?curso").Value = 2006 da = New MySqlDataAdapter(cm) ds= New DataSet() da.Fill(ds) 'la variable Dim vista as DataView es global a toda la clase vista=ds.Tables(0).DefaultView dgv.datasource=vista Entonces ya tenemos los datos correspondientes a la consulta en el objeto ds, que es un objeto de la clase DataSet y mostrados sobre el control dgv que es el control DataGridView. Ahora tenemos que implementar el evento TextChanged de la caja de texto con el siguiente contenido: Suponemos que vamos a filtrar por el campo primer_apellido del alumno y que la caja que usaremos de filtro se llama txtFiltro. vista.RowFilter= "primer_apellido LIKE '%" & txtFiltro.text & "%'" De esta manera el datagridview se ir refrescando automticamente con los valores que coincidan con el filtro tecleado (cualquiera que contenga el patrn). Nota: Suponemos que la variable Dim vista as DataView es global a toda la clase, es decir, que est declarada al principio de la clase. Eliminar una fila de una base de datos MySql (ADO.NET) En este ejemplo vamos a ver cmo eliminar un registro de una base de datos MySql. Necesitamos incluir el siguiente cdigo al comienzo del formulario: Imports System.Data.MySql

Veamos el cdigo necesario para eliminar un registro en una tabla con las siguientes caractersticas: PERSONAS(idpersona,nombre,apellido) Supongamos que idpersona lo tenemos almacenado en una caja de texto llamada txtIdPersona La base de datos est localizada en un servidor MySQL. El cdigo sera el siguiente: Dim cn As MySqlConnection cn = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.Open() Dim cm As MySqlCommand cm = New MySqlCommand("DELETE FROM personas WHERE idpersona=? idpersona") cm.Parameters.Add("?idpersona", MySqlDbType.Int32) cm.Parameters("?idpersona").Value = txtIdPersona.Text cm.Connection = cn cm.ExecuteNonQuery() cn.Close() Insercin de registros en una base de datos MySQL (ADO.NET) Necesitamos incluir lo siguiente al comienzo del formulario: Imports System.Data.MySql Veamos el cdigo necesario para incluir un registro en una tabla con las siguientes caractersticas: PERSONAS(idpersona,nombre,apellido) Supongamos que idpersona es un campo autonumrico y que es la clave. Los campos nombre y apellido supongamos que son cadenas de caracteres y tomamos sus valores de las cajas de texto txtNombre y txtApellido. La base de datos est localizada en un servidor MySQL. El cdigo sera el siguiente: Dim cn As MySqlConnection cn = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.Open() Dim cm As MySqlCommand cm = New MySqlCommand("INSERT INTO personas(nombre,apellido) VALUES (?nombre,?apellido)) cm.Parameters.Add("?nombre", MySqlDbType.VarChar) cm.Parameters("?nombre").Value = txtNombre.Text cm.Parameters.Add("?apellido", MySqlDbType.VarChar) cm.Parameters("?apellido").Value = txtApellido.text cm.Connection = cn cm.ExecuteNonQuery() cn.Close()

Nota: Es importante destacar que el orden de declarar los parmetros, debe ser el mismo orden de aparicin en la consulta SQL. Rellenar un dataset con una consulta SQL y volcarlo a un DataGridView (VB.NET) Vamos a rellenar un dataset con una consulta de la siguiente manera: Nota: La variable dgv es nuestro control DataGridView. Dim sql As String Dim cn as MySqlConnection Dim cm As MySqlCommand Dim da As MySqlDataAdapter Dim ds as DataSet sql = "SELECT * FROM alumnos WHERE cursoAcademico=?curso" cn = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.open() cm = New MySqlCommand() cm.CommandText = sql cm.CommandType = CommandType.Text cm.Connection = cn cm.Parameters.Add("?curso", MySqlDbType.Int32) cm.Parameters("?curso").Value = 2006 da = New MySqlDataAdapter(cm) ds= New DataSet() da.Fill(ds) dgv.datasource=ds.Tables(0).DefaultView Entonces ya tenemos los datos correspondientes a la consulta en el objeto ds, que es un objeto de la clase DataSet y mostrados sobre el control dgv que es el control DataGridView. Rellenar un ListBox con todas las tablas de una base de datos MySQL (VB.NET) Para rellenar el objeto ListBox1 de la clase ListBox con el nombre de todas las tablas de una base de datos MySQL hay que realizar lo siguiente: Dim sql As String Dim cn As MySqlConnection Dim cm As MySqlCommand Dim dr As MySqlDataReader cn = new MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.Open() sql = "show tables;" cm = New MySqlCommand() cm.CommandText = sql cm.CommandType = CommandType.Text cm.Connection = cn dr = cm.ExecuteReader()

While dr.Read() ListBox1.Items.Add(dr(0)) End While dr.Close() Almacenar imgenes desde Visual Basic.NET (VB.NET) Supongamos una tabla Imgenes que tenga los siguientes campos: IMAGENES(idimagen,imagen) El campo imagen ser del tipo longblob. El cdigo sera el siguiente: Dim cn As OleDbConnection Dim sqlActualizar As MySqlCommand Dim FileSize UInt32 Dim rawData() As Byte Dim fs As FileStream Dim oImg As Image cn = new MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1"); sqlActualizar = New MySqlCommand() fs = New FileStream("c:\imagen.jpg", FileMode.Open, FileAccess.Read) cm = New OleDbCommand() FileSize = fs.Length rawData = New Byte(FileSize) {} fs.Read(rawData, 0, FileSize) fs.Close() oImg = Image.FromFile(txtDocumento.Text) sqlActualizar = New MySqlCommand("INSERT INTO imagenes(imagen) VALUES(?imagen)") sqlActualizar.Parameters.Add("?imagen", rawData) cn.open() cm.CommandText = sqlActualizar cm.CommandType = CommandType.Text cm.Connection = cn cm.ExecuteNonQuery() cn.Close() Rellenar un ComboBox (VB.NET) Para rellenar un ComboBox, tenemos que realizar lo siguiente: Dim sql As String Dim cn as MySqlConnection Dim cm As MySqlCommand Dim da As MySqlDataAdapter Dim ds as DataSet cn = new MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.open()

sql = "SELECT valor1,valor2 FROM tabla_que_corresponda" cm = New MySqlCommand() cm.CommandText = sql cm.CommandType = CommandType.Text cm.Connection = cn da = New MySqlDataAdapter(cm) ds= New DataSet() da.Fill(ds) cmbSeccion.DataSource = ds.Tables(0) cmbSeccion.DisplayMember = "valor1" cmbSeccion.ValueMember = "valor2" El campo valor1 se mostrar en el combo, mientras que el campo valor2 se almacenar en la propiedad Value de dicho combo. Rellenar un dataset con una consulta SQL (ADO.NET) Vamos a rellenar un dataset con una consulta de la siguiente manera: Dim sql As String Dim cn as MySqlConnection Dim cm As MySqlCommand Dim da As MySqlDataAdapter Dim ds as DataSet sql = "SELECT * FROM alumnos WHERE cursoAcademico=?curso" cn = new MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1") cn.open() cm = New MySqlCommand() cm.CommandText = sql cm.CommandType = CommandType.Text cm.Connection = cn cm.Parameters.Add("?curso", MySqlDbType.Int32) cm.Parameters("?curso").Value = 2006 da = New MySqlDataAdapter(cm) ds= New DataSet() da.Fill(ds) Entonces ya tenemos los datos correspondientes a la consulta en el objeto ds, que es un objeto de la clase DataSet. Consulta MySql mediante ExecuteScalar() (VB.NET) El mtodo ExecuteScalar() del conector MySql para .NET nos va a permitir recibir el valor devuelto por la consulta. En el ejemplo de ste artculo, vamos a recibir el valor de num, que se obtendr como resultado de la consulta a la base de datos. Cabe destacar que para que el mtodo ExecuteScalar() funcione correctamente, slo se

debe devolver una fila, ya que dicho mtodo slo devolver un escalar. El cdigo sera el siguiente: Dim cn as MySqlConnection Dim cm As MySqlCommand Dim x As Integer cn = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User ID=usuario; Password=clave; Allow Zero Datetime=True; CHARSET=latin1"); cn.open() cm = New MySqlCommand("SELECT num FROM tabla WHERE ...") 'La consulta de la lnea anterior debe devolver nicamente un registro cm.Connection = cn x = cm.ExecuteScalar() MessageBox.Show(x.ToString())