En algunos proyectos que he realizado he utilizado esta clase para conectar MYSQL con VB .NET, la verdad es que no me ha causado conflicto y solo la he tenido que modificar para algunos fines específicos pero contiene lo básico para hacer las operaciones principales como guardar consultar y borrar algún dato.
Imports System.Data Imports System.Data.SqlClient Imports MySql.Data.MySqlClient Public Class Consulta #Region "Variables" Dim cnnMYSQL As New MySqlConnection Dim cnnSQL As New SqlConnection Dim cmd As SqlCommand Dim cmnd As MySqlCommand Dim dt, dtr As New DataTable() #End Region #Region "ConnectionString" Public Sub connectingSQL() Try cnnSQL.ConnectionString = "Data Source=server;Initial Catalog=catalog;Integrated Security=SSPI;" cnnSQL.Open() Catch ex As SqlException End Try End Sub Public Sub connectingMYSQL() Try cnnMYSQL = New MySqlConnection() cnnMYSQL.ConnectionString = "Data Source = server;Database=db;User ID=root; Password = pass; Allow Zero Datetime=True; CHARSET=latin1" cnnMYSQL.Open() ' abre la conexion con la bd Catch ex As MySqlException End Try End Sub #End Region Public Sub consulta_non_query(ByVal consulta As String) 'Este metodo recibe como parametro la consulta completa y sirve para hacer INSERT, UPDATE Y DELETE conexion.ConnectionString = str_conexion cmd = New SqlCommand(consulta, conexion) conexion.Open() Try cmd.ExecuteNonQuery() MsgBox("La operacion se realizo con exito!", MsgBoxStyle.Information, "Operacion exitosa!" ) Catch ex As Exception MsgBox("Error al operar con la base de datos!", MsgBoxStyle.Critical, "Error!" ) End Try conexion.Close() End Sub Public Function consulta_reader(ByVal consulta As String) As DataTable 'Este metodo recibe como parametro la consulta completa y sirve para hacer SELECT Dim dt As New DataTable conexion.ConnectionString = str_conexion cmd = New SqlCommand(consulta, conexion) conexion.Open() Try dt.Load(cmd.ExecuteReader()) Catch ex As Exception MsgBox("Error al operar con la base de datos!", MsgBoxStyle.Critical, "Error!" ) End Try conexion.Close() Return dt End Function Public Sub cargar_lista(ByRef lista As ListBox, ByVal consulta As String, ByVal valueMember As String, ByVal displayMember As String) Dim dt As New Data.DataTable conexion.ConnectionString = str_conexion cmd = New SqlCommand(consulta, conexion) conexion.Open() Try dt.Load(cmd.ExecuteReader()) lista.DataSource = dt lista.ValueMember = valueMember lista.DisplayMember = displayMember Catch ex As Exception MsgBox("Error al operar con la base de datos!", MsgBoxStyle.Critical, "Error!" ) End Try conexion.Close() End Sub Public Sub cargar_combo(ByRef combo As ComboBox, ByVal consulta As String, ByVal valueMember As String, ByVal displayMember As String) Dim dt As New DataTable conexion.ConnectionString = str_conexion cmd = New SqlCommand(consulta, conexion) conexion.Open() Try dt.Load(cmd.ExecuteReader()) combo.DataSource = dt combo.ValueMember = valueMember combo.DisplayMember = displayMember Catch ex As Exception MsgBox("Error al operar con la base de datos!", MsgBoxStyle.Critical, "Error!" ) End Try conexion.Close() End Sub Public Function ObtenerDatos(ByVal consulta As String) Dim valorRetorno As Integer Try 'connectingMY() Dim cmd As New SqlCommand cmd.CommandType = CommandType.Text cmd.Connection = cnnSQL cmd.CommandText = consulta valorRetorno = cmd.ExecuteScalar() Catch ex As Exception ' MsgBox("Error en BD") End Try Return valorRetorno End Function Public Function verificar_existencia(ByVal consulta As String) As Boolean 'Devuelve true si existe, entonces no grabamos, o devuelve false si no existe entoinces debemos grabar. Dim dt As New DataTable conexion.ConnectionString = str_conexion cmd = New SqlCommand(consulta, conexion) conexion.Open() Try dt.Load(cmd.ExecuteReader()) Catch ex As Exception MsgBox("Error al operar con la base de datos!", MsgBoxStyle.Critical, "Error!" ) End Try conexion.Close() If dt.Rows.Count > 0 Then Return True Else Return False End If End Function End Class