Исключение первого случая типа ‘MySQL.Data.MySqlClient.MySqlException’ произошло в MySql.Data.dll

#mysql #visual-studio-2010

#mysql #visual-studio-2010

Вопрос:

Я пытаюсь выполнить вход в систему в таблице user (usuario), сразу после компиляции моего кода я получаю это «предупреждение» в окне Immediate, предупреждение — это моя тема, затем, после того как я нажал кнопку Register, я получаю сообщение об ошибке, в котором говорится: «У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘)’ в первой строке .

Моя таблица usuarios (пользователи) содержит следующие поля: идентификатор (PK, НЕ NULL, АВТОИНКРЕМЕНТ), Cedula (идентификатор) varchar (15), имя (Nombre) varchar (10), Apellido (фамилия) varchar (10), имя пользователя (Usuario) varchar(10), клавиша (пароль) varchar (10). испанский имена, очевидно, совпадают с таблицей, и когда я создавал clave, я не заметил, что в нем была строчная буква c, поэтому я не поместил ее в верхний регистр сейчас.

Вот код:

Conexion.bv (Модуль)

     Imports MySql.Data    
    Imports MySql.Data.Types     
    Imports MySql.Data.MySqlClient    

    Module Conexion_Bd    
        Public coneccion_servidor As String    
        Public conector As New MySqlConnection    

Public Function coneccion_global() As Boolean
    'Crea la conexion a la base de datos
    Dim estado As Boolean = True
    Try
        coneccion_servidor = ("server=localhost;database=consultorio;user     xxxxx;password=xxxxxx;")
        conector = New MySqlConnection(coneccion_servidor)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        estado = False
    End Try
    Return estado
End Function

Public Sub cerrar()
    conector.Close()
End Sub
  

Конечный модуль

Теперь в классе datos_ingreso

     Private _columna_idUsuarios As Integer    
     Private _columna_cedula As String    
     Private _columna_nombre As String    
     Private _columna_apellido As String    
     Private _columna_usuario As String    
     Private _columna_clave As String    

Public Property columna_idUsuarios As Integer
    Get
        Return _columna_idUsuarios
    End Get
    Set(ByVal value As Integer)
        _columna_idUsuarios = value
    End Set
End Property

Public Property columna_cedula As String

    Get
        Return _columna_cedula
    End Get
    Set(ByVal value As String)
        _columna_cedula = value
    End Set
End Property

Public Property columna_nombre As String

    Get
        Return _columna_nombre
    End Get
    Set(ByVal value As String)
        _columna_nombre = value
    End Set
End Property

Public Property columna_apellido As String

    Get
        Return _columna_apellido
    End Get
    Set(ByVal value As String)
        _columna_apellido = value
    End Set
End Property

Public Property columna_usuario As String

    Get
        Return _columna_usuario
    End Get
    Set(ByVal value As String)
        _columna_usuario = value
    End Set
End Property

Public Property columna_clave As String

    Get
        Return _columna_clave
    End Get
    Set(ByVal value As String)
        _columna_clave = value
    End Set
End Property
  

Конечный класс

Наконец, в классе ingreso_uusario_sistema

     Imports MySql.Data    
    Imports MySql.Data.Types    
    Imports MySql.Data.MySqlClient    
   Public Class ingreso_usuario_sistema    
Private adaptador As New MySqlDataAdapter    

Public Function ingresarUsuarios(ByVal datos As datos_ingreso) As Boolean
    Dim estado As Boolean = True
    Try
        coneccion_global() 'llama a la funcion para crear la conexion la base de datos
        conector.Open() 'Se crea la conexion a la base de datos
        'Utiliza las instancias de la clase de datos de ingreso para poder ingresar los registros a los campos
        '@nombre_campo hace referencia a lo que tiene cada variable para insertar en la Base de Datos
        '@nombre_campo esta hecho en datos_ingresados.
        'No se incluye el id
        adaptador.InsertCommand = New MySqlCommand("insert into usuarios (Cedula, Nombre, Apellido, Usuario, clave) values (@columna_cedula, @columna_nombre, @columna_apellido, @columna_usuario, @columna_clave,)", conector)
        adaptador.InsertCommand.Parameters.Add("@columna_cedula", MySqlDbType.VarChar, 10).Value = datos.columna_cedula
        adaptador.InsertCommand.Parameters.Add("@columna_nombre", MySqlDbType.VarChar, 15).Value = datos.columna_nombre
        adaptador.InsertCommand.Parameters.Add("@columna_apellido", MySqlDbType.VarChar, 15).Value = datos.columna_apellido
        adaptador.InsertCommand.Parameters.Add("@columna_usuario", MySqlDbType.VarChar, 15).Value = datos.columna_usuario
        adaptador.InsertCommand.Parameters.Add("@columna_clave", MySqlDbType.VarChar, 15).Value = datos.columna_clave
        'conector.Open()
        adaptador.InsertCommand.Connection = conector
        adaptador.InsertCommand.ExecuteNonQuery()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
        estado = False
    Finally
        cerrar()
    End Try
    Return estado
End Function
  

Конечный класс

На кнопке Register (Регистрация) у меня есть следующий код:

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        
        Dim conexion As New ingreso_usuario_sistema    
        Dim datos As New datos_ingreso    

    datos.columna_cedula = TextBox1.Text
    datos.columna_nombre = TextBox2.Text
    datos.columna_apellido = TextBox3.Text
    datos.columna_usuario = TextBox4.Text
    datos.columna_clave = TextBox5.Text
    If conexion.ingresarUsuarios(datos) Then
        MsgBox("Entry was successful", MsgBoxStyle.Information, "Registro Usuarios")
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        TextBox1.Focus()
    Else
        MsgBox("Entry was not successful", MsgBoxStyle.Information, "Registro Usuarios")
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""
        TextBox1.Focus()


    End If
End Sub
  

Как я уже говорил ранее, сначала я получаю «предупреждение», затем я получаю синтаксическую ошибку sql из исключения, а затем я получаю сообщение «Запись не удалась».

Спасибо всем за ваше время. Пожалуйста, дайте мне знать, в чем была моя ошибка.

Ответ №1:

Я столкнулся с той же ошибкой. Я разрешил его, используя полную строку подключения следующим образом:

 "server=localhost;user id=root;persistsecurityinfo=True;database=rmsprd_owner;port=3307;password=rmsprd"
  

Потому что во время установки я использовал порт 3307, а не 3306. Пожалуйста, проверьте это сами и измените строку подключения соответствующим образом.