Visual Basic.NET - Consultas a base MySql - ayuda

 
Vista:
Imágen de perfil de Luis

Consultas a base MySql - ayuda

Publicado por Luis (5 intervenciones) el 26/03/2024 17:10:01
Estoy aprendiendo visual net , viniendo de visual basic.
Utilizo visual studio 2019 y la ultima version de Mysql (mediante phpmyadmin).
Veo que hay diversas formas de acceder a los datos de las tablas, queria recomendacion experimentada y algun codigo de ejemplo de consultas sencillas , cual es la forma mas sencilla y optima de realizarlas :

Consultar 1 solo campo de una tabla MySql
Consultar toda la tabla
Insertar 1 registro en una tabla
Encriptar y desencriptar el password del login ( con una manera sencilla alcanzaría )
Estoy viendo diversos videos en youtube .. pero la mayoria lo hace de formas distintas y me confunde un poco.
Gracias !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 27/03/2024 14:37:53
Hola,

He visto que ya tienes grande experiencia en programación.

Te envio un programa simple de lectura de una DB. Funciona por una DB Access registrada en la carpeta del proyecto.
Debes cambiar la ruta en la ConnectionString porque este sera diferente sobre tu PC.

En las declaraciones, varias cambias están necesarias para trabajar con MySql. He puesto informaciones.

Este programa hace la lectura de la DB de 2 maneras : con DataAdapter y con DataReader. Todos los datos están mostrados en varias zonas : TextBox, ListBox, ComboBox y DataGridView.

Cuando lo quieres, te muestro como ejecutar los comandos SQL (INSERT, UPDATE y DELETE) sobre la DB, con la utilización de ExecuteNoQuery. Pero seria bien si ya puedes ejecutar mi programa sobre MySql (debes crear le DB en MySql).

Estero que este te sera utile ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis

Consultas a base MySql - ayuda

Publicado por Luis (5 intervenciones) el 27/03/2024 15:54:48
Buenisimo ! Una duda que seguramente puedes evacuarme. Si necesito traer 1 solo registro , sea para compararlo o editarlo , cual seria el metodo mas optimo ?DatAdapter o DataReader , o es similar? Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 27/03/2024 17:11:36
Por cualquiera manera, la lectura de datos de un DB se hace siempre con un registro completo. Despué, para utilizar los diferentes campos, es mejor (pienso) de utilizar un DataTable (±igual al RecordSet del VBA o VB6.0). El DataTable puede ser afectado al DataSource de las herramientas de mostrada (pe. DataGridView). Con el DataAdapter, el DataTable es “automáticamente” llenado. Con el DataReader, si queremos utilizar un DataTable, debemos lo llenar “manualmente”. Ves la diferencia en mis códigos.
Por lo tanto, es el DataAdaptert que prefiero.
Cuando el DataTable es llenado, contiene los campos con nombres y datos. Asi, es fácil de tratar un campo u otro.

Espero responder a tu pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis

Consultas a base MySql - ayuda

Publicado por Luis (5 intervenciones) el 29/03/2024 00:08:02
Genial Phil .. voy entendiendo.
Podrias decirme porque la siguiente funcion me tira error de Null en la linea del ExecuteScalar ? El count deberia retornar 0 ó 1 ... pero me dice : System.NullReferenceException: 'Object reference not set to an instance of an object.'


Public Function Consulta_login(ByRef cad_usu As String, ByRef cad_pass As String) As Boolean
Try
Dim cad1 As String
cad1 = "SELECT Count(*) FROM empleado WHERE USUARIO='" + cad_usu + "' AND PASS='" + cad_pass + "'"

Dim vComm As MySqlCommand
vComm = New MySqlCommand(cad1, con1)

Dim vResultado As Object
vResultado = vComm.ExecuteScalar

If vResultado > 0 Then
MsgBox("Correcto")
Return True
Else
MsgBox("Incorrecto")
Return False
End If

Catch ex As Exception

Label3.Text = "ERR"
MsgBox(ex.Message)

End Try
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 29/03/2024 08:47:54
Hola Luis,

1
2
Dim vResultado As Object
vResultado = vComm.ExecuteScalar

Tu consulta debe dar un Integer. Seria mejor de escribir :

1
2
Dim vResultado As Integer
vResultado = vComm.ExecuteScalar

En VB 6.0, a menudo utilizamos el tipo Object. En VB.Net, utilizamos el tipo exacto cada vez que posible.

No tengo tiempo ahora, Intentaré tu código en la tarde y te confirmaré mi comentario.

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 29/03/2024 13:03:38
Hola Luis,

Encontrado otro error : MySqlCommand debe ser intensar.

Dim vComm As MySqlCommand debia ser Dim vComm As New MySqlCommand

Pero, si quieres abandonar el antiqua VB y pasar realmente a VB.Net, seria bien que utilisas una mejor escritura.

Por ejemplo, es bien de tomar le & para operador de concatenación a lugar del + que guardamos por los cálculos.
Otro, en VB.Net, utilizamos MessageBox.Show a lugar de MsgBox. Están diferentes al nivel de la memoria.
...

Para probar tu código. Lo he modificado un poco.
He creado la DB-Luis con Mysql, y la tabla 'empleado' y he creado el proyecto LuisMySql, para probar tu código. Lo he modificado un poco. Adjunto este proyecto

Luis01

Luis02

Mira la video Luis01.mp4 que encontraras en la carpeta del proyecto, en el archivo adjuntado.

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Luis

Consultas a base MySql - ayuda

Publicado por Luis (5 intervenciones) el 29/03/2024 15:12:59
Disculpas Phil por mi ignorancia jaja ... me maree ..... me falta cargar la conexión en el load del form. Ya está funcionando , muchas gracias !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 29/03/2024 18:19:28
Mi código en ParametroConexion(), llamada en el Form_Load, sirve solamente a definir la ConnectionString.
Para abrir la conexión, es según el tratamiento.
Con los comandos ExecuteScalar y ExecuteNoQuery, es necesario de hacer MiConexion.Open() y, por lo tanto de hacer MiConexion.Close() tan rápidamente que posible, para liberar la memoria.
Es mismo cuando utilizamos el DataReader.
A contrario, cuando utilizamos el DataAdapter, no debemos nos preocupar de los Open y Close, el DataAdapter hace el necesario.

Pero debes mirar las utilizaciones de New. A cada New debe se encontrar un Dispose. Alguien herramientas que no tienen el Dispose, tienen un Close. A menudo, el Close hace también el Dispose.
Cuando no nos preocupar de estos detalles, rápidamente, tenemos la saturación de la memoria.

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consultas a base MySql - ayuda

Publicado por Phil Rob (1554 intervenciones) el 09/04/2024 22:36:41
Hola Luis,
He respondido al mensaje privado.
No hay notificación ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar