#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. Пожалуйста, проверьте это сами и измените строку подключения соответствующим образом.