Foros del Web » Programación para mayores de 30 ;) » .NET »

Error sentencia SQL en aplicacion VB.net

Estas en el tema de Error sentencia SQL en aplicacion VB.net en el foro de .NET en Foros del Web. Me estoy volviendo loco!! Tengo una aplicacion en VB que borra usuarios de una base de datos, pero siempre me da este mismo error: Cita: ...
  #1 (permalink)  
Antiguo 09/03/2010, 10:25
 
Fecha de Ingreso: febrero-2010
Mensajes: 11
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Error sentencia SQL en aplicacion VB.net

Me estoy volviendo loco!! Tengo una aplicacion en VB que borra usuarios de una base de datos, pero siempre me da este mismo error:

Cita:
Usuario no encontrado: you have an error in your sql syntax; check the manual that corresponds to your mysql server version to the right syntax to use near ')' at line 1
Y no tengo ni idea de porque puede ser, ya que el codigo es el mismo que para el boton agregar y alli no da problemas.
La cosa es que el ELSE lo hace sin problemas, si tu metes Admin no te deja borrar pero si pones cualquier otro nombre este o no en la tabla, salta ese error!

Os pongo todo el codigo a ver si asi me podeis echar una mano.

Cita:
Imports System.Windows.Forms
Imports MySql.Data.MySqlClient

Public Class Borrar

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Dim Tabla As New DataTable 'se encarga de representar la tabla de datos en la memoria
Dim conexion As MySqlConnection 'gestiona la conexion a la Base de Datos
Dim Ds As New DataSet 'representa la memoria interna de los datos

conexion = New MySql.Data.MySqlClient.MySqlConnection
conexion.ConnectionString = "server=localhost; user=root; password=''; database=proyecto; port=3306;"
conexion.Open()

Dim ct = TextBox1.Text

If ct = "Admin" Then
MessageBox.Show("Admin no puede ser borrado.")
Else
Dim borrar As New MySqlDataAdapter("Delete from usuarios where Nombre = ct", conexion)
Dim Cmd As New MySqlCommandBuilder(borrar)

Try
borrar.Fill(Tabla)
MessageBox.Show("Usuario borrado con éxito.")
conexion.Close()
Catch mierror As MySqlException
MessageBox.Show("Usuario no encontrado: " & mierror.Message)
Finally
conexion.Dispose()
End Try
End If

Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub

End Class

MUCHAS GRACIAS a todos!

Última edición por QuirogaXD; 09/03/2010 a las 10:34
  #2 (permalink)  
Antiguo 09/03/2010, 10:37
 
Fecha de Ingreso: febrero-2010
Mensajes: 11
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Error sentencia SQL en aplicacion VB.net

SOLUCIONADO!!!
He metido variables sustituyendo codigo y arreglado!

Gracias de todos modos.

Saludos!
  #3 (permalink)  
Antiguo 09/03/2010, 10:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 101
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Error sentencia SQL en aplicacion VB.net

Que bien QuirogaXD, analizando tu codigo te digo donde estaba el error:
En esta linea:

Dim ct = TextBox1.Text

Se te paso por alto declarar ct como string. solo pusistes Dim ct de ahi el error. deberia ser asi:

Dim ct as String= TextBox1.Text
  #4 (permalink)  
Antiguo 09/03/2010, 14:19
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error sentencia SQL en aplicacion VB.net

En realidad el error se encontraba en la línea

Código vb.net:
Ver original
  1. Dim borrar As New MySqlDataAdapter("Delete from usuarios where Nombre = ct", conexion)

estas pasando ct como parte de la cadena, cuando debería ser:

Código vb.net:
Ver original
  1. Dim borrar As New MySqlDataAdapter("Delete from usuarios where Nombre = `" & ct & "`", conexion)

Pero analizando bien el código creo que no es la forma mas idonea para hacerlo, ¿para que declarar un Table y un DataAdaptar y un DataSet si lo que deseas es hacer un DELETE?

Con una variable conexión y una Command es suficiente:

Código vb.net:
Ver original
  1. Dim query As String = "Delete from usuarios where Nombre = @Nombre"
  2.         Dim ct As String = TextBox1.Text
  3.         Using oConnection As New SqlConnection(oConnectionString)
  4.             Using oCommand As New SqlCommand(query, oConnection)
  5.                 oCommand.Parameters.Add(New SqlParameter("Nombre", ct))
  6.                 oConnection.Open()
  7.                 oCommand.ExecuteNonQuery()
  8.             End Using
  9.         End Using

Esta es una mejor forma de hacerlo, aunque yo preferiría con procedimientos almacenados :)

Nota: Aca utilicé los objetos de SqlClient, solo sustituyelos por los de MySql
Saludos

Última edición por piyey; 09/03/2010 a las 14:22 Razón: Aclarar nota

Etiquetas: sentencia, sql, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.