类型' MySql.Data.MySqlClient.MySqlException'的第一次机会异常发生在MySql.Data.dll中

时间:2014-07-05 23:35:05

标签: mysql visual-studio-2010

我正在尝试在用户(usuario)表中进行登录,在编译我的代码之后,我得到了这个"警告"在立即窗口中,警告是我的主题,然后在我点击注册按钮后,我收到一条消息,说我有一个错误说:"你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用')'在第一行。

我的表usuarios(用户)有以下字段:idUsuario(PK,NOT NULL,AUTOINCREMENT),Cedula(id)varchar(15),name(Nombre)varchar(10),Apellido(姓氏)varchar(10) ),用户名(Usuario)varchar(10),clave(密码)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 Class

    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

结束班

在注册(注册器)按钮上,我有下一个代码:

    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 个答案:

答案 0 :(得分:-1)

我遇到了同样的错误。我通过使用完整的连接字符串解决了它,如下所示:

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

因为在安装时我使用的是端口3307而不是3306.请自行检查并相应更改连接字符串。