ADO: conectarse a MySQL e introducir datos en una VISTA

Vamos a continuar profundizando en los temas de ayer. Empezamos con temas de MySQL. Tenemos que descargarlos de la propia web:

-    mysql-5.5.14-winx64 (community server: elegimos el de 64 bits).

-    mysql-gui-tools-5.0-r17-win32 (el entorno gráfico).

 Se pueden ver los pasos más conflictivos aquí.

 

Tenemos que ir a odbcad32 - Acceso directo para agregar los drivers de MySQL. Si hubiera problemas de desactualización nos obligaría a descargarlos. Tendremos que poner estos datos al agregar: ver aquí. También señalamos los detalles del cambio de conexión al “agregar nuevo origen de datos”.

 

 

Sobre los ejercicios de hoy. Veremos el esquema siguiente:

1º, los ob jetos que dependen de la BD empleada:

a.1 Conexión.              Ej.: ConexionMySQL.Open()

a.2 Adaptador.            Ej.: Dim Adaptador As New MySqlDataAdapter("SELECT * FROM AUTORES", ConexionMySQL)

Después, se ponen los INDEPENDIENTES de la BD.

b.1DataSet.                  Ej.: Dim Datos As New DataSet + llenado del DataSet: Adaptador.Fill(Datos, "AUTORES")

        Ya con el DataSet pueden aparecer otros objetos independientes como:

        - Manejador.        Ej.: Dim Manejador As New DataViewManager(Datos)

                           b.100 DataSource y DataMember (ya para publicar los datos):

                                                                   dgv.DataSource = Datos: dgv.DataMember = "AUTORES"

En el primer proyecto (se puede ver el formulario aquí completo) vamos a conectarnos por NET y por ODBC. Comprobaremos que se hace de la misma forma en un caso y en otro.

 

Importando la librería correspondiente y abriendo la conexión (con Try), hacemos lo siguiente para mostrar los datos en un DataGriedView (con su cadena de conexión bien declarada en el formulario de diseño):

 

        Dim Adaptador As New MySqlDataAdapter("SELECT * FROM AUTORES", ConexionMySQL)

        Dim Datos As New DataSet

        Adaptador.Fill(Datos, "AUTORES")

        dgv.DataSource = Datos

        dgv.DataMember = "AUTORES"

 

Ya lo hemos visto en otros post: aquí se puede ver de forma más sencilla y clara.

Si la conexión fuera a través de ODBC se haría exactamente igual (sustituimos MySQL por ODBC donde corresponda).

 

 

Ya dejando MySQL,  nos metimos más en ADO con este otro proyecto. Empezamos a utilizar un Manager con ADO. Para ver el proyecto completo, hacer click aquí: 190711 Forzoso ADO Real Manager.

 

Veremos de qué manera se peude forzar una conexión a una BD de SQL. En el primer caso, vamos a realizar una búsqueda de clientes de nuestra BD.

Como en el ejercicio anterior, creamos el DataAdapter y el DataSet de igual forma y con la misma selección de datos de la tabla en cuestión. Añadimos lo siguiente con idea de recuperar la clave principal (entre el DataAdapter y el DataSet):

 

        Adaptador.MissingSchemaAction = MissingSchemaAction.AddWithKey

 

Conociendo la clave principal nos permite realizar búsquedas, inserciones, eliminaciones…

Vamos a probar con una búsqueda a través de un TextBox. Creamos un manejador y ya está:

 

        Dim Manejador As New DataViewManager(Datos)

        Manejador.DataViewSettings("Tabla").RowFilter = "NOMBRE LIKE '" + tbConsulta.Text + "%'"

 

Cerramos la conexión y declaramos el DataSource y el DataMember del DataGriedView.

 

 

 

2º caso del mismo proyecto. Vamos a añadir una fila.

Todo igual  que antes hasta:

 

        Adaptador.MissingSchemaAction = MissingSchemaAction.AddWithKey

        Dim Comando As New SqlCommandBuilder(Adaptador)

 

Ahora nuestro Adaptador ya puede emplear Insert, Delete y Update. Creamos el DataSet y vamos a crear una fila de la siguiente manera:

 

        Dim Fila As DataRow = Datos.Tables("Tabla").NewRow

        'Obtenemos una nueva fila vacía con la estructura que tendrá esta tabla.

        Fila("CIF") = "12312312P": Fila("NOMBRE") = "REINOSA": Fila("DIRECCION") = (etc.)

 

Ahora añadimos la fila y actualizamos el DataSet (con Try, por seguridad):

 

        Datos.Tables("Tabla").Rows.Add(Fila)

        Try

            Adaptador.Update(Datos, "Tabla")

            'Forzamos al DataSet a aceptar los cambios y grabar en origen.

            Datos.AcceptChanges()

        Catch ex As Exception

            MsgBox(ex.Message, MsgBoxStyle.Critical, "Conflicto con clave principal")

        End Try

 

Cerramos la conexión y declaramos el DataSource y el DataMember como otras ocasiones.

 

 

Caso 3º del mismo proyecto. IMPORTANTE: veremos cómo introducir datos a través de una vista.

Es muy semejante al caso anterior hasta la creación del DataSet. Ahora (por ejemplo) vamos a hacer una vista de los clientes de la provincia de Ourense.

 

        Dim Vista As New DataView(Datos.Tables("Tabla"), "PROVINCIA='OURENSE'",

                                  "NOMBRE ASC", DataViewRowState.CurrentRows)

        'Creamos una nueva fila en la vista.

        Dim Fila As DataRowView = Vista.AddNew()

        Fila("CIF") = "12312312B": Fila("NOMBRE") = "RAMONASA": etc.

        'Finalizamos la edición.

        Fila.EndEdit()

        'Actualizamos el origen de datos.

        Adaptador.Update(Datos, "Tabla")

 

Y terminamos según lo acostumbrado.

Comentarios

Las posibilidades se multiplican. A ver si conseguimos estar a la altura y aprovecharlas.


Añadir un Comentario:



Inserta aquí el código de verificación que ves en la imagen.

Acerca de paiou2011

Blog de aula

Suscríbete

RSS | Atom

Contacto

Contactar

Albergado en:blogspot.es

Noticias: Noticias