简体   繁体   English

从 VB.net 插入 mysql 时出错

[英]Error making an insert to mysql from VB.net

This was working ok but suddenly it stopped to work and started to give me this error, either inserting new data or updating.这工作正常,但突然停止工作并开始给我这个错误,无论是插入新数据还是更新。 I must say that I know is bad to concatenate but our tachers obligates us do it this way.我必须说,我知道连接不好,但我们的老师要求我们这样做。

I tried the same query in navicat and it works, but, when i put it in VB.net it start to give me this error.我在 navicat 中尝试了相同的查询并且它有效,但是,当我将它放入 VB.net 时,它开始给我这个错误。

Query code:查询代码:

UPDATE personal SET nombre = '" & ModUser_txtNombre.Text & "', 2nombre = '" & ModUser_txt2Nombre.Text & "', apellido = '" & ModUser_txtApellido.Text & "', 2apellido = '" & ModUser_txt2apellido.Text & "', sexo = '" & ModUser_cbSexo.Text & "', f_nac = '" & ModUser_dateFNacimiento.Text & "', calle = '" & ModUser_txtDirCalle.Text & "', numero = " & ModUser_txtDirNumero.Text & ", estado_civil = '" & ModUser_cbEstCivil.Text & "', email = '" & ModUser_txtEmail.Text & "', hijos = '" & ModUser_txtHijos.Text & "', tel_celular = " & ModUser_txtCelular.Text & ", tel_fijo = " & ModUser_txtFijo.Text & ", f_ingreso = '" & ModUser_dateFIngreso.Text & "', cargo = " & cargo.ToString & ", grado = " & ModUser_cbGrado.Text & ", departamento = " & departamento.ToString & ", email_empr = '" & ModUser_txtMailEmpresarial.Text & "', tlf_empr = " & ModUser_txtTlfEmpresarial.Text & ", rol = " & rol.ToString & " WHERE doc = " & List_txtBuscar.Text & "(now insert)    

    insert into Personal (rol, doc, nombre, apellido, passwd, sexo, f_nac, 
                          estado_civil, f_ingreso, cargo, grado, dpto, email,
                           email_empr, tlf_empr, calle, numero, 2nombre,
                           2apellido, activo,) 
values(" & adduser_rol & ", " & AddUser_txtDocumento.Text & ", '" 
  & AddUser_txtNombre.Text & "', '" & AddUser_txtApellido.Text & "', " 
  & AddUser_txtContraseña.Text & ", '" & AddUser_cbSexo.Text & "', '" 
  & AddUser_dateFNacimiento.Text & "', '" & AddUser_cbEstCivil.Text & "', '" 
  & AddUser_dateFIngreso.Text & "', '" & AddUser_txtCargo.Text & "', " 
  & AddUser_cbGrado.Text & ", '" & AddUser_txtDepartamento.Text & "', '" 
  & AddUser_txtEmail.Text & "', '" & AddUser_txtMailEmpresarial.Text & "', " 
  & AddUser_txtTlfEmpresarial.Text & ", '" & AddUser_txtDirCalle.Text & "', " 
  & AddUser_txtDirNumero.Text & ", '" & 
     AddUser_txt2Nombre.Text & "', '" & AddUser_txt2apellido.Text & "', 's')

Code in visual:可视化代码:

   cnn.Open()
        Dim Query As String
        Query = "UPDATE personal SET nombre = '" & ModUser_txtNombre.Text & "', 2nombre = '" & ModUser_txt2Nombre.Text & "', apellido = '" & ModUser_txtApellido.Text & "', 2apellido = '" & ModUser_txt2apellido.Text & "', sexo = '" & ModUser_cbSexo.Text & "', f_nac = '" & ModUser_dateFNacimiento.Text & "', calle = '" & ModUser_txtDirCalle.Text & "', numero = " & ModUser_txtDirNumero.Text & ", estado_civil = '" & ModUser_cbEstCivil.Text & "', email = '" & ModUser_txtEmail.Text & "', hijos = '" & ModUser_txtHijos.Text & "', tel_celular = " & ModUser_txtCelular.Text & ", tel_fijo = " & ModUser_txtFijo.Text & ", f_ingreso = '" & ModUser_dateFIngreso.Text & "', cargo = " & cargo.ToString & ", grado = " & ModUser_cbGrado.Text & ", departamento = " & departamento.ToString & ", email_empr = '" & ModUser_txtMailEmpresarial.Text & "', tlf_empr = " & ModUser_txtTlfEmpresarial.Text & ", rol = " & rol.ToString & " WHERE doc = " & List_txtBuscar.Text & ""
        Dim cmd As New MySqlCommand(Query, cnn)
        rdr = cmd.ExecuteReader
        cnn.Close()

(now insert) (现在插入)

Dim adduser_rol As Integer

        If AddUser_rbAdmin.Checked Then
            adduser_rol = 1
        ElseIf AddUser_rbUsuario.Checked Then
            adduser_rol = 2
        Else
            MsgBox("Debe seleccionar si el nuevo empleado es usuario o administrador.")
        End If
        Dim cnn As New MySqlConnection
        cnn.ConnectionString = ("data source=localhost;user id=root; password='1234';database=tax")
        Try
            Dim Query As String
            Query = "insert into Personal (rol, doc, nombre, apellido, passwd, sexo, f_nac, estado_civil, f_ingreso, cargo, grado, dpto, email, email_empr, tlf_empr, calle, numero, 2nombre, 2apellido, activo,) values(" & adduser_rol & ", " & AddUser_txtDocumento.Text & ", '" & AddUser_txtNombre.Text & "', '" & AddUser_txtApellido.Text & "', " & AddUser_txtContraseña.Text & ", '" & AddUser_cbSexo.Text & "', '" & AddUser_dateFNacimiento.Text & "', '" & AddUser_cbEstCivil.Text & "', '" & AddUser_dateFIngreso.Text & "', '" & AddUser_txtCargo.Text & "', " & AddUser_cbGrado.Text & ", '" & AddUser_txtDepartamento.Text & "', '" & AddUser_txtEmail.Text & "', '" & AddUser_txtMailEmpresarial.Text & "', " & AddUser_txtTlfEmpresarial.Text & ", '" & AddUser_txtDirCalle.Text & "', " & AddUser_txtDirNumero.Text & ", '" & AddUser_txt2Nombre.Text & "', '" & AddUser_txt2apellido.Text & "', 's', )"
            cnn.Open()
            Dim cmd As New MySqlCommand
            cmd = New MySqlCommand(Query, cnn)
            cmd.ExecuteNonQuery()
            MessageBox.Show("Usuario guardado")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

And in both when I press the button it gives me the following errors:在这两种情况下,当我按下按钮时,都会出现以下错误:

Updating Unknown column 'i' in 'field list'更新“字段列表”中的未知列“i”

Inserting..."for the right syntax to use near')values(X,XXXXXXXX, 'XXXX', 'XXXX', XXXXXXXX, 'XXXXXX', 'XXXX-XX-XX','c' at line 1 (being X any value possible)在第 1 行插入..."以获得正确的语法以使用 near')values(X,XXXXXXXX, 'XXXX', 'XXXX', XXXXXXXX, 'XXXXXX', 'XXXX-XX-XX','c' X 任何可能的值)

Table "Personal" desing:表“个人”设计:

1

You sql statement is wrong.你 sql 语句是错误的。 At the end of the columns list you have an comma too much在列列表的末尾,您的逗号太多

 Query = "insert into Personal (rol, doc, nombre, apellido, passwd, sexo, f_nac
    , estado_civil, f_ingreso, cargo, grado, dpto, email, email_empr, tlf_empr
    , calle, numero, 2nombre, 2apellido, activo) values(" & adduser_rol & ", " 
     & AddUser_txtDocumento.Text & ", '" & AddUser_txtNombre.Text & "', '" 
     & AddUser_txtApellido.Text & "', " & AddUser_txtContraseña.Text & ", '" 
     & AddUser_cbSexo.Text & "', '" & AddUser_dateFNacimiento.Text & "', '" 
     & AddUser_cbEstCivil.Text & "', '" & AddUser_dateFIngreso.Text & "', '" 
      & AddUser_txtCargo.Text & "', " & AddUser_cbGrado.Text & ", '" 
      & AddUser_txtDepartamento.Text & "', '" & AddUser_txtEmail.Text & "', '" 
      & AddUser_txtMailEmpresarial.Text & "', " & AddUser_txtTlfEmpresarial.Text 
      & ", '" & AddUser_txtDirCalle.Text & "', " & AddUser_txtDirNumero.Text 
      & ", '" & AddUser_txt2Nombre.Text & "', '" & AddUser_txt2apellido.Text 
      & "', 's', )"

Use in Vb net also Prepared statement Like在 Vb net 中也使用 Prepared statement Like

cmd.Connection = conn

cmd.CommandText = "INSERT INTO  Personal (rol, doc, nombre, apellido, passwd, sexo
                  , f_nac, estado_civil, f_ingreso, cargo, grado, dpto, email, email_empr, tlf_empr
    , calle, numero, 2nombre, 2apellido, activo) VALUES(@adduser_rol, @AddUser_txtDocumento,.....)"

cmd.Prepare()

cmd.Parameters.AddWithValue("@adduser_rol", adduser_rol)
cmd.Parameters.AddWithValue("@AddUser_txtDocumento", AddUser_txtDocumento.Text)
...
cmd.ExecuteNonQuery()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM