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!
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.
xD escribió
wena loko, me haz ayudado
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…
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…
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.
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
…
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()
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…
RIFT1 escribió
prueba lo siguiente amigo:
dim a as integer = conexionBD.Database.Length()
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
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
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
brenda escribió
para que sirve Me en visual basic.net
brenda escribió
para que sirve my class en visual basic.net
brenda escribió
como hago una instanciacion en visual basic.net
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)
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….
PoOoX escribió
Bien visto Giovan!!
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
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……
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.
alan carrillo escribió
Exelente, nada mejor explicado como esto.
wolf escribió
Excelenta aporte, 1000 gracias….
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…