[ad_1]
Hola,
Estoy intentando conectarme a una base de datos MYSQLWorkbench desde VB.NET (Visual Studio) usando este código:
Imports System.Data Imports MySql.Data.MySqlClient Imports MySql.Data Public Class Form1 Dim oCon As MySql.Data.MySqlClient.MySqlConnection Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim sProveedor As String sProveedor = "server = localhost; database = vikingos_barberia; user id = root; password = **********; port = 3306" oCon = New MySqlClient.MySqlConnection(sProveedor) oCon.Open() MsgBox("Conexion Exitosa!!") End Sub End Class
Lo que he probado:
Verifiqué varias veces el parámetro sin ningún cambio.
Solución 2
Para agregar a lo que dice Dave, es aún peor: abre una conexión a la base de datos que nunca puede usarse ya que solo se almacena en una variable local, que sale del alcance al final del controlador de eventos Form.Load.
Dado que no se puede acceder a ella en absoluto fuera del método (de hecho, todas las variables locales ya no existen cuando finaliza el método), la conexión que crea es completamente inútil y solo ocupa recursos escasos en el servidor.
Siempre deberías ser un Using
bloquee la creación de cualquier objeto de base de datos (Conexión, Comando, Lector y Adaptador) para cerrarlos y eliminarlos automáticamente cuando finalice el bloque:
Using con As New SqlConnection(strConnect) con.Open() Using cmd As New SqlCommand("SELECT iD, description FROM myTable", con) Using reader As SqlDataReader = cmd.ExecuteReader() While reader.Read() Dim id__1 As Integer = CInt(reader("iD")) Dim desc As String = DirectCast(reader("description"), String) Console.WriteLine("ID: {0}" & vbLf & " {1}", iD, desc) End While End Using End Using End Using
Solución 1
El código que publicó no puede generar ese error. El mensaje de error se refiere a la conversión de algo recuperado de la base de datos donde el valor de un campo es DbNull y está intentando convertirlo a otro tipo.
El código que publicó no ejecuta ninguna consulta. Todo lo que estás haciendo es abrir una conexión en el evento Form_Load.
Como nota al margen, NO debe abrir una conexión a la base de datos y mantenerla abierta durante la vida útil de su aplicación. Debería abrir una conexión a la base de datos solo cuando necesite ejecutar una consulta y cerrarla lo antes posible.
Solución 3
El problema es que está utilizando la biblioteca de clases MySql.Data de Oracle, que tiene muchos errores. No está bien mantenido y debe evitarse. No es compatible con las versiones más recientes de MariaDB y los errores suelen ser tan absurdos como el que recibió.
En su lugar, cambie a utilizar MySqlConnector de código verdaderamente abierto. El código es idéntico, solo debes cambiar la línea Importaciones en la parte superior de cada módulo o clase.
[ad_2]
コメント