Visual Basic .Net con MySQL, como usarlo

Nueva versión propia de la clase de conexión a mysql aquí

En este post resumire un poco las distintas cosas que se pueden hacer, con mucho codigo y poca explicacion, porque de hecho no hay mucho que explicar, las consultas son con SQL puro y duro, y el visual… es visual!

Antes de nada recordar que para establecer una conexion con la base de datos se requiere la DLL que os adjunto. Una vez la tengais la colocais donde os vaya mejor, y desde el proyecto de visual basic haceis:

Proyecto->Agregar referencia…-Examinar, y la cargais.

La DLL la he colgado aqui:

http://www.pooox.es/MySql_Data.rar

Una vez hecho esto os cuento que hice yo:

1. Añadi la siguiente linea en el codigo de los formularios que manejan algo con base de datos:

Imports MySql.Data.MySqlClient

2. Hice una clase que manipulaba los datos, la cual la instancio desde el Form_Load(). La clase la llamo ‘consultas’, lo siguiente es un copiar y pegar de mi codigo:

http://www.pooox.es/consultas.txt

3. Desde el formulario principal, creo una variable del tipo consultas, la hago como global por preferencia mia. Despues uso la clase cuando necesito usarla, creo que no tiene perdida. Hice que las SELECT de la classe consultas devolviera una variable del tipo MysqlDataReader, con lo que siempre que se quiera recuperar los datos de una consulta habra que crear dicha variable en el formulario, o hacerla global y te olvidas.

Aqui os dejo la primera parte de mi formulario por si hay dudas:

Imports MySql.Data.MySqlClient  

Public Class Form1 

Dim cons As consultas
Dim lectura As MySqlDataReader 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load

cons = New consultas("localhost", "nick","contraseña") 

lectura = cons.consulta("grupos")

Dim i As Integer
Try

For i = 0 To lectura.FieldCount - 1
lectura.Read()

ComboBox1.Items.Add(lectura.GetValue(1).ToString())

Next

Catch ex As MySqlException

End Try

lectura.Close()

End Sub

Si sirve de referencia, cabe decir que todo esto lo he hecho en local, con el xampp instalado que ya tiene el apache y el phpmyadmin instalados.

Para cualquier duda o sugerencia sobre esta mini explicacion hacermelo saber!
Espero que os sirva de mucho!

24 comentarios »

  1. PoOoX escribió

    Todo esto espero que os ayude a entonar Mysql con visual basic net, el codigo que os adjunto de mi formulario es meramente para que acabeis de comprender que datos manejo con la select para agregar los datos en un comboBox.

  2. xD escribió

    wena loko, me haz ayudado

  3. Loría escribió

    De verdad excelente, no te imaginas lo que me ha costado buscar un ejemplo de SQL en VB y MySQL porque todos los ejemplos son con un DataGrid, y yo lo que ocupo es la malipulación completa del SQL, mil gracias de verdad, y felicidades por la página demasiado buena…

  4. Loria escribió

    Solo una consulta…

    Como hago para determinar el final de lo que estoy leyendo…

    Por ejemplo tengo 3 registros (o tuplas como quieras llamarle) en una tabla, y quiero hacer un For para leer solo esas tres. Como hago para determinar el final de la tabla. Pense en utilizar Lectura.GetBoolean(EOF) (EOF=Final del archivo, aunque cuando yo lo hacia con Access tomaba la tabla como archivo), pero no me sirve dice que el DataReader no es un archivo, entonces como hago para saber el final o aunque sea la cantidad de tuplas de mi tabla…

    Saludos…

  5. PoOoX escribió

    Bueno si te fijas en la porción de código que subí para ilustrar esto, hay un lect = executeReader(), el cual devuelve una variable del ripo datareader.

    No deberias tener problemas para hacer un for de ese vector de resultados devueltos, no lo recuerdo del todo bien pero diria que hay una propiedad ‘lenght’ que te devuelve el tamaño de registros consultados.

  6. Loria escribió

    Ok, voy a probarlo mas tarde para ver como funciona, aunque tambien se me ocurrio solucionarlo con una query Count :-) de esta manera ver cuantos registros hay en la tabla, pero no se donde se guardaria el valor!!!…

    Por ejemplo, llamo el metodo de la clase que haga la consulta por ejemplo SELECT (*)COUNT From Estudiantes, de esta manera se cuantos registros tiene la tabla, pero no se de donde saco el valor, es decir el numero de esos registros, me iamgino que seria Lect.ToString, pero no estoy seguro haber si me lo puedes confirmar…

    Y otra consulta, este metodo de acceder y escribir en la base de datos tambien sirve con C++.net y C#.net, obvio cambiando la sintaxis un poco, pero igual sirve con el conector de .net y todo este rollo?…

    Saludos, y perdona por tanta preguntadera, igual al rato le sirve a otros :-)

  7. andresz01 escribió

    Hola gracias por tu aporte me ayudo mucho, solo encontraba como hacer arrastrando botones y me salian errores que no podia solucionar y haciendo a mano resulto mejor sin ningun problema….

    Segun la inquietud de loria yo necesitaba algo parecido, necesitaba que en un combobox me aparecieran todos los alumnos de una clase pero necesitaba la dimension de la columna para elloasi que hice esto… fijate en la variable ‘a’… espero te ayude en algo…

    Dim i As Integer
    Dim a As Integer

    While lectura.Read()
    a = a + 1
    End While

    lectura.Close()
    lectura = cons.consultaSinWhere(”mathsoftsol.uruario”, “NombreCompleto”)
    Me.ComboBoxNombreCompleto.Items.Clear()

    Try
    For i = 1 To a

    lectura.Read()
    Me.ComboBoxNombreCompleto.Items.Add(lectura.GetValue(0).ToString)

    Next

    Catch ex As MySqlException

    MessageBox.Show(”Error: No se pudieron ingresar los usuarios”)

    End Try

    lectura.Close()

  8. Loria escribió

    Siiii…

    Esta excelente ese truco andresz01… no sabia que se podia hacer eso con el while y la variable lectura y sin duda, asi se saben cuantas tuplas se tiene… aunque seguire investigando como hacerlo con el SELECT COUNT :-) siempre me quedo la duda…

    Perfecto el aporte saludos…

  9. RIFT1 escribió

    prueba lo siguiente amigo:
    dim a as integer = conexionBD.Database.Length()

  10. gigginet escribió

    chuzo brother eers lo maximo… estaba probando tu codigo, y despues de un par de horas pude hacerlo funcionar… la verdad es q tu aporte es excelente… hace tiempo estuve buscando algo para poder hacer esto, y la verdad es q no lo consegui… y ahora veo q lo explicas sin tanto problema y rodeos… muy bueno y exceltne aporte… te debo una blodd

  11. crisangel escribió

    perdon pero tengo problemas con una conexion remota me marca un error cero a ver si alguna vez encontro algo similar gracias un buewn aporte

  12. yrving escribió

    Magnifica esta explicacion, gracias por el aporte, a ver si puedes explicarme dentro del codigo consulta como puedo rellenar un formulario con informacion de una base de datos que contiene 14 fields

  13. brenda escribió

    para que sirve Me en visual basic.net

  14. brenda escribió

    para que sirve my class en visual basic.net

  15. brenda escribió

    como hago una instanciacion en visual basic.net

  16. PoOoX escribió

    El Me es como el this de otros lenguajes, se refiere al propio objeto.

    La instanciación es simplemente crear la variable objeto:

    variable = new X(aaa,eee)

  17. GiovanGonzalez escribió

    Hola, muchas gracias por la clase… es genial…

    mira que andresz escribio que para hacer un for que recorra todos los resultados se hiciera primero:
    ——————–
    While lectura.Read()
    a = a + 1
    End While
    ——————–
    y luego teniendo en a el valor de registros se hiciera:

    —————————-
    For i = 1 To a

    lectura.Read()
    Me.ComboBoxNombreCompleto.Items.Add(lectura.GetValue(0).ToString)

    Next
    —————-

    Pues bien, el primer paso se puede obviar y utlizarlo de una vez en el segundo for… me refiero a que asi se evita ciclos de programacion:
    ———————-
    While lectura.Read()
    ComboBox1.Items.Add(lectura.GetValue(1).ToString())

    End While
    ——————-

    Esto es una respuesta para iterar los resultados sin tener que calcular el count, etc….

  18. PoOoX escribió

    Bien visto Giovan!!

  19. alan escribió

    Necesito que alguien me diga como (con este mismo driver y con la version 2005 de Visual Basic .Net) hacer un Update sobre la base de datos para actualizar los campos de la misma desde un Textbox. Alguien me podria facilitar el codigo? Muchas gracias

  20. Andrea escribió

    Hola a todos, estoy iniciando con esto del visual y mysql y he tenido problemas al cargar el combobox ya que me toma un usuario y me lo repite hasta finalizar el largo de la tabla, les agradezco si me pueden ayudar con esto……

  21. jose escribió

    hola disculpa una pregunta en cuanto a tu clase de insertar me podrias dar un ejemplo por que mar un error de que “la expresion no genera un valor” podrias ayudarme con eso porfabor.

  22. alan carrillo escribió

    Exelente, nada mejor explicado como esto.

  23. wolf escribió

    Excelenta aporte, 1000 gracias….

  24. Andrés escribió

    Hola como estas, una pregunta en cuanto a la conexión, me puedo conectar solamente a la bases de datos con el usuario root y al quererme conectar con otro usuario que tengo en mysql me dice que no puedo tener acceso a la base de datos. Me podrias ayudar por favor…

RSS suscribirse para los comentarios en esta entrada · URI para TrackBack.

Deja un comentario