Foros del Web » Programación para mayores de 30 ;) » .NET »

[Ayuda] Vb 2010 Mysql

Estas en el tema de [Ayuda] Vb 2010 Mysql en el foro de .NET en Foros del Web. Hola, estoy empezando a trabajar con visual basic .net en conjunto con mysql y necesito que me orienten un poco para arrancar, despues yo me ...
  #1 (permalink)  
Antiguo 18/06/2010, 13:06
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años, 7 meses
Puntos: 0
[Ayuda] Vb 2010 Mysql

Hola, estoy empezando a trabajar con visual basic .net en conjunto con mysql y necesito que me orienten un poco para arrancar, despues yo me arreglo. Tengo experiencia trabajando con vb 6 y bases de datos comunes como acces pero ahora con esto de mysql se me esta complicando.
Ya tengo instalado y configurado correctamente vb.net, mysql y puedo tener acceso a las bases de datos tanto localmente como remotamente. Ahora lo que necesitaria saber es que instrucciones usar para poder hacer consultas en la base de datos para poder empezar a entender el funcionamiento de las altas, bajas y modificaciones.

Tengo un formulario creado y esta indicado el origen de datos. El formulario toma 2 variables que contienen nombre y dni de una persona. Como hago para ingresarlos en una tabla ahora, cuales son las instrucciones que se usan para este tipo de acciones?

Espero que se entienda mas o menos cual es la consulta y me puedan dar una mano para orientarme y poder avanzar un poco.

Gracias
  #2 (permalink)  
Antiguo 18/06/2010, 13:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: [Ayuda] Vb 2010 Mysql

Esta es una copia de un post que le respondí hace tiempo a itotra persona:

1. Para crear el enlace con el MySQL solamente tienes que instanciar un objeto MysqlConnection y asignarle un ConnectionString adecuado. Los formatos del string los encontrarás en http://www.connectionstrings.com/mysql, por ejemplo.
2. No abras y cierres constantemente la conexión. Existe mucho más overhead en la creación de cada nuevo enlace que lo que puedes perder manteniendolo inactivo. Simplemente haz una validación de su estado antes de enviar una consulta. Si está cerrado, abrelo y listo.
3. Las consultas son instancias de MysqlCommand. Este objeto te servirá para crear lectores (MysqlDataAdapter) o bien para ejecutar cualquier cosa.
4. Un objeto MysqlConnection te permite hacer dos cosas críticas con muy poco esfuerzo: Manejar transacciones y cambiar de base, sin por ello tender que cerrar la conexion activa.
He aquí unos ejemplos:
Imports:
Código vb.net:
Ver original
  1. Imports MySql.Data.MySqlClient
  2. Imports MySql.Data.Types
Variables:
Código vb.net:
Ver original
  1. Private Conexion As MySqlConnection
  2. Private Reader As MySqlDataReader
  3. Private Adapter As MySqlDataAdapter
  4. Private Sentencias As MySqlCommand
  5. Private Trans As MySqlTransaction
  6. Private strCx As String
  7. Private oSql, sSql As String
Conectar: Esta versión verifica que el usuario no esté conectado ya en otro puesto. Además verifica algunos errores posibles.
Código vb.net:
Ver original
  1. ' CONECTAR a la base de datos con parámetros.
  2.     Public Function Conectar(ByVal vServer As String, ByVal vBase As String, ByVal vUser As String, ByVal vPwd As String, ByVal oPort As Int16) As Boolean
  3.         Dim strCx As String
  4.         Dim SetDatos As New DataSet
  5.         If Not Conexion Is Nothing Then
  6.             If Conexion.State = 1 Then
  7.                 Conexion.ChangeDatabase(vBase)
  8.                 Return True
  9.             ElseIf Conexion.State = ConnectionState.Closed Then
  10.                 Conexion.Open()
  11.                 Conexion.ChangeDatabase(vBase)
  12.                 Try
  13.                     Sentencias = New MySqlCommand("SET SESSION SQL_BIG_SELECTS=1;", Conexion)
  14.                     Sentencias.ExecuteNonQuery()
  15.                 Catch ex As Exception
  16.                     MessageBox.Show("El servidor responde: " & vbCrLf & ex.Message, "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  17.                 End Try
  18.                 Return True
  19.             Else
  20.                 Return False
  21.             End If
  22.         Else
  23.             Try
  24.                 strCx = "Database=" & vBase & ";Data Source=" & vServer & ";User Id=" & vUser & ";Password=" & vPwd & ";Port=" & oPort.ToString & ";CharSet=utf8;Pooling=false;"
  25.                 Conexion = New MySqlConnection(strCx)
  26.                 Conexion.Open()
  27.                 sSQL = "SHOW PROCESSLIST;"
  28.                 Adapter = New MySqlDataAdapter(sSQL, Conexion)
  29.                 Adapter.Fill(SetDatos, "LISTAPROCESOS")
  30.                 If SetDatos.Tables("LISTAPROCESOS").Select("USER = '" & vUser & "'").Length > 1 Then
  31.                     Conexion.Close()
  32.                     MessageBox.Show("No se puede realizar la conexión." & vbNewLine & "El usuario " & vUser & " está conectado desde otro puesto.", "Error: ADMINISTRADOR ACTIVO", MessageBoxButtons.OK, MessageBoxIcon.Error)
  33.                     Return False
  34.                 End If
  35.                 Return True
  36.             Catch ex As MySqlException
  37.                 If Not Directory.Exists(System.Environment.GetEnvironmentVariable("ProgramFiles") & "\MySQL\MySQL Server 5.0\data\fulmar") Then
  38.                     MessageBox.Show("La base de datos no existe o ha sido eliminada." & vbCrLf & "Se reiniciará para cargar el formulario de creación." & vbCrLf & "Notifique al Administrador del Gestor.", "Error de falla mayor", MessageBoxButtons.OK, MessageBoxIcon.Error)
  39.                     nuevoLogin.RegServer.Ip = ""
  40.                     Process.Start(Application.ExecutablePath)
  41.                     End
  42.                 End If
  43.                 Select Case ex.Number
  44.                     Case 0
  45.                         MessageBox.Show("El servidor no responde." & vbCrLf & "Consulte con el Administrador de Sistemas", "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  46.                     Case 1226
  47.                         MessageBox.Show("El usuario ingresado ya se encuentra logueado en otro puesto.", "Error de login duplicado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  48.                     Case 1040
  49.                         MessageBox.Show("Demasiadas conexiones activas." & vbCrLf & "Notifique al Administrador del Gestor.", "Error de saturación de server", MessageBoxButtons.OK, MessageBoxIcon.Error)
  50.                     Case 1044
  51.                         MessageBox.Show("Usuario sin privilegios para el servidor." & vbCrLf & "Notifique al Administrador del Gestor.", "Error de privilegios", MessageBoxButtons.OK, MessageBoxIcon.Error)
  52.                     Case 1045
  53.                         MessageBox.Show("El nombre de usuario o la clave son incorrectas." & vbCrLf & "Vuelva a ingresarlas", "Error delogin", MessageBoxButtons.OK, MessageBoxIcon.Error)
  54.                     Case 1049
  55.                         MessageBox.Show("La base de datos no existe." & vbCrLf & "Notifique al Administrador del Gestor.", "Error de falla mayor", MessageBoxButtons.OK, MessageBoxIcon.Error)
  56.                     Case Else
  57.                         MessageBox.Show("Es posible que la base de datos haya sido eliminada.", "Error de falla mayor", MessageBoxButtons.OK, MessageBoxIcon.Error)
  58.                 End Select
  59.                 Return False
  60.             End Try
  61.             Return True
  62.         End If
  63.     End Function

Crear y ejecutar una sentencia cargada en una variable:
Código vb.net:
Ver original
  1. sSQL = "DROP TABLE IF EXISTS GEOCODE;"
  2. ' --------------------------------------------------------------------------------
  3. Sentencias = New MySqlCommand(sSQL, conexion)
  4. Sentencias.ExecuteNonQuery()

Crea y ejecutar una lectura de una tabla a un datatable:
Código vb.net:
Ver original
  1. sSQL = "SELECT * FROM CATEGORIAS;"
  2. Sentencias = New MySqlCommand(sSQL, conexion)
  3. Adapter = New MySqlDataAdapter(Sentencias)
  4. Adapter.Fill(oTabla)
Crea y ejecutar una lectura de un valor a una variable integer:
Código vb.net:
Ver original
  1. sSQL = "SELECT LAST_INSERT_ID();"
  2. ' --------------------------------------------------------------------------------
  3. Sentencias = New MySqlCommand(sSQL, conexion)
  4. oId = Convert.ToInt32(Sentencias.ExecuteScalar)

Espero que te sirvan
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/06/2010 a las 16:32
  #3 (permalink)  
Antiguo 18/06/2010, 15:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: [Ayuda] Vb 2010 Mysql

Para verificar si está o no abierta, y si lo está previene que se haya cambiado de base:
Código vb.net:
Ver original
  1. 'CONECTAR a la base de datos
  2.     Public Function Conectar() As Boolean
  3.         Dim strCx As String
  4.         Dim SetDatos As New DataSet
  5.         If Not Conexion Is Nothing Then
  6.             If Conexion.State = 1 Then
  7.                 If Conexion.Database <> ConstBase Then
  8.                     Conexion.ChangeDatabase(ConstBase)
  9.                 End If
  10.                 Return True
  11.             ElseIf Conexion.State = ConnectionState.Closed Then
  12.                 Try
  13.                     Conexion.Open()
  14.                     If Conexion.Database <> ConstBase Then
  15.                         Conexion.ChangeDatabase(ConstBase)
  16.                     End If
  17.                     Sentencias = New MySqlCommand("SET SESSION SQL_BIG_SELECTS=1;", Conexion)
  18.                     Sentencias.ExecuteNonQuery()
  19.                 Catch ex As Exception
  20.                     MessageBox.Show("El servidor responde: " & vbCrLf & ex.Message, "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  21.                 End Try
  22.                 Return True
  23.             Else
  24.                 Return False
  25.             End If
  26.         Else
  27.             Try
  28.                 strCx = "Database=" & nuevoLogin.RegServer.Ip & ";Data Source=" & nuevoLogin.NombreBase & ";User Id=" & nuevoLogin.usuario.UserName & ";Password=" & nuevoLogin.usuario.PasWord & ";Port=" & nuevoLogin.RegServer.Port.ToString & ";CharSet=utf8;Pooling=false;"
  29.                 Conexion = New MySqlConnection(strCx)
  30.                 Conexion.Open()
  31.                 sSQL = "SHOW PROCESSLIST;"
  32.                 Adapter = New MySqlDataAdapter(sSQL, Conexion)
  33.                 Adapter.Fill(SetDatos, "LISTAPROCESOS")
  34.                 If SetDatos.Tables("LISTAPROCESOS").Select("USER = '" & nuevoLogin.usuario.UserName & "'").Length > 1 Then
  35.                     Conexion.Close()
  36.                     MessageBox.Show("No se puede realizar la conexión." & vbNewLine & "El usuario " & nuevoLogin.usuario.UserName & "está conectado desde otro puesto.", "Error: ADMINISTRADOR ACTIVO", MessageBoxButtons.OK, MessageBoxIcon.Error)
  37.                     Return False
  38.                 End If
  39.             Catch ex As MySqlException
  40.                 Select Case ex.Number
  41.                     Case 0
  42.                         MessageBox.Show("El servidor no responde." & vbCrLf & "Consulte con el Administrador de Sistemas", "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  43.                     Case 1226
  44.                         MessageBox.Show("El usuario ingresado ya se encuentra logueado en otro puesto.", "Error de usuario en conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  45.                     Case 1045
  46.                         MessageBox.Show("El nombre de usuario o la clave son incorrectas." & vbCrLf & "Vuelva a ingresarlas", "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  47.                     Case 2003
  48.                         MessageBox.Show("El Server no responde." & vbCrLf & "Puede haber problemas en la intranet." & vbCrLf & "Consulte con el Administrador de Sistemas", "Error de conexión principal", MessageBoxButtons.OK, MessageBoxIcon.Error)
  49.                     Case 1049
  50.                         MessageBox.Show("La base de datos no existe." & vbCrLf & "Notifique al Administrador del sistema.", "Error de conexión a la base", MessageBoxButtons.OK, MessageBoxIcon.Error)
  51.                 End Select
  52.                 Return False
  53.             End Try
  54.             Return True
  55.         End If
  56.     End Function
ConstBase es una constante de tipo string que contiene el nombre de la base de datos usada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/06/2010 a las 16:32
  #4 (permalink)  
Antiguo 18/06/2010, 16:03
 
Fecha de Ingreso: abril-2006
Mensajes: 17
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: [Ayuda] Vb 2010 Mysql

Muchas gracias, esta noche me pongo a hacer pruebas y practicar un poco con esta informacion.
  #5 (permalink)  
Antiguo 18/03/2013, 20:03
 
Fecha de Ingreso: marzo-2013
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: [Ayuda] Vb 2010 Mysql

hola, ya se que este post es muy viejo, pero recién lo encuentro. En fin tengo una pregunta: ¿que es "nuevoLogin"? no entiendo eso, es una variable de que tipo?
Espero que alguien ande por aca todavía. Gracias
  #6 (permalink)  
Antiguo 19/03/2013, 11:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: [Ayuda] Vb 2010 Mysql

Es una pregunta bastante obvia, si miras dónde se usa y en qué contexto: Es una instancia de una clase. Una clase específicamente creada para una aplicación y si la miras con muuuucjho cuidado verás que contiene: IP, Username, Nombre de la base, password y port de conexión

¿A qué te suena?

Exacto, es una clase que contiene los datos de una conexión de un usuario al DBMS en un momento dado...

Más que preguntar esto, deberías poder deducirlo... ¿No te parece?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 19/03/2013, 19:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 2
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: [Ayuda] Vb 2010 Mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Es una pregunta bastante obvia, si miras dónde se usa y en qué contexto: Es una instancia de una clase. Una clase específicamente creada para una aplicación y si la miras con muuuucjho cuidado verás que contiene: IP, Username, Nombre de la base, password y port de conexión

¿A qué te suena?

Exacto, es una clase que contiene los datos de una conexión de un usuario al DBMS en un momento dado...

Más que preguntar esto, deberías poder deducirlo... ¿No te parece?
Ok, algo asi pensaba. Estoy empezando con esto de mysql y vb.net.
Me gustaría haber nacido sabiendo, pero no fue asi.
No pregunté para hacerte perder tiempo a vos.
Perdete tus clases, procedimientos y variables por el centro del ojete.

Etiquetas: basic, mysql, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.