Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/07/2011, 17:40
sterlingdiazd
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Eliminar fila de una base de datos

Saludos.

Estoy haciendo una aplicacion que elimine un usuario a una base de datos, de un arrayList y al mismo tiempo del JFrame. Los datos se insertan bien pero cuando le voy a eliminar, me dice que el nombre de la columna no es valido, y me trae el nombre del usuario, que invoco en el metodo. El error que me da es el siguiente:

Cita:
com.microsoft.sqlserver.jdbc.SQLServerException: El nombre de columna 'Z' no es válido.
Este es el codigo:

Código Java:
Ver original
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import java.util.ArrayList;
  7. import javax.swing.JFrame;
  8.  
  9. public class Conexion {
  10.  
  11.     Connection con;
  12.     Statement stmt;
  13.     ResultSet rs;
  14.    
  15.     public Conexion(){
  16.        
  17.         try {
  18. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
  19.             con = DriverManager.getConnection( "jdbc:sqlserver://localhost;databaseName=Eventos;user=Sterling;password=123456" );
  20.             stmt = con.createStatement();
  21.         } catch (InstantiationException e) {
  22.             e.printStackTrace();
  23.         } catch (IllegalAccessException e) {
  24.             e.printStackTrace();
  25.         } catch (ClassNotFoundException e) {
  26.             e.printStackTrace();
  27.         } catch (SQLException e) {
  28.             e.printStackTrace();
  29.         }
  30.     }
  31.    
  32.     public void listarUsuario(){
  33.         try {
  34.             rs = stmt.executeQuery( "select * from Usuarios order by Usuario ");
  35.             while ( rs.next() ){
  36.                 System.out.println(
  37.                         rs.getString("Nombre")      + "\t" +
  38.                         rs.getString("Apellido")    + "\t" +
  39.                         rs.getString("Usuario")     + "\t" +
  40.                         rs.getString("Contraseña")  + "\t" +
  41.                         rs.getString("Perfil")
  42.                 );
  43.             }
  44.         } catch (SQLException e) {
  45.             // TODO Auto-generated catch block
  46.             e.printStackTrace();
  47.         }
  48.     }
  49.    
  50.     public ArrayList<Usuario> getUsuario(){
  51.         ArrayList<Usuario> usuarios = null;
  52.         try {
  53.             rs = stmt.executeQuery("select * from Usuarios order by Usuario ");
  54.             usuarios = new ArrayList<Usuario>();
  55.             while ( rs.next() ){
  56.                 usuarios.add( new Usuario( rs.getString("Nombre"), rs.getString("Apellido"), rs.getString("Usuario"), rs.getString("Contraseña"), rs.getString("Perfil")  ) );
  57.             }
  58.         } catch (SQLException e) {
  59.             // TODO Auto-generated catch block
  60.             e.printStackTrace();
  61.         }
  62.         return usuarios;
  63.     }
  64.    
  65.     public void insertarUsuario(Usuario usuario){
  66.         try {
  67.             stmt.execute("insert into Usuarios(Nombre, Apellido, Usuario, Contraseña, Perfil) values (     '"+ usuario.getNombre() +"', '"+ usuario.getApellido() +"', '" + usuario.getUsuario() +"', '"+ usuario.getContraseña() +"', '"+ usuario.getPerfil() +"') ");
  68.         } catch (SQLException e) {
  69.            
  70.             System.out.println("No se puede insertar valor repetido");
  71.             e.printStackTrace();
  72.         }
  73.     }
  74.    
  75.     public void eliminarUsuario( Usuario usuarios ){
  76.         try {
  77.             [SIZE="5"]stmt.execute(" delete from Usuarios where Usuario = " + usuarios.getUsuario() );[/SIZE]
  78.            
  79.         } catch (SQLException e) {
  80.             // TODO Auto-generated catch block
  81.             e.printStackTrace();
  82.         }
  83.     }
  84.    
  85.     public static void main(String[] args) {
  86.         Conexion conecta = new Conexion();
  87.         conecta.listarUsuario();
  88.     }
  89. }

Y aqui está el query que elimina el usuario:

Código Java:
Ver original
  1. import java.util.ArrayList;
  2. import javax.swing.table.AbstractTableModel;
  3.  
  4. public class Modelo extends AbstractTableModel {
  5.  
  6.     ArrayList<Usuario> usuarios;
  7.     Conexion con;
  8.    
  9.     Modelo(){
  10.         con = new Conexion();
  11.         usuarios = con.getUsuario();
  12.     }
  13.    
  14.     [SIZE="5"]public void eliminar(int fila){
  15.         con.eliminarUsuario(usuarios.get(fila));
  16.         usuarios.remove(fila);
  17.         fireTableRowsDeleted(fila, fila);
  18.     }[/SIZE]
  19.    
  20.     String [] encabezado = {"Nombre", "Apellido", "Usuario", "Contraseña", "Perfil"};
  21.     public int getColumnCount() {
  22.         return encabezado.length;
  23.     }
  24.    
  25.     public int getRowCount() {     
  26.         return usuarios.size();
  27.     }
  28.    
  29.     public String getColumnName(int x) {
  30.         return encabezado[x];
  31.     }
  32.    
  33.     public void añadir(Usuario usuario){
  34.         con.insertarUsuario(usuario);
  35.         usuarios = con.getUsuario();
  36.         fireTableDataChanged();
  37.  
  38.     }
  39.     public Object getValueAt(int x, int y) {
  40.         String retorno = "";
  41.         Usuario usuario = usuarios.get(x);
  42.        
  43.         switch (y){
  44.         case 0: retorno = usuario.getNombre();
  45.         break;
  46.         case 1: retorno = usuario.getApellido();
  47.         break;
  48.         case 2: retorno = usuario.getUsuario();
  49.         break;
  50.         case 3: retorno = usuario.getContraseña();
  51.         break;
  52.         case 4: retorno = usuario.getPerfil();
  53.         }
  54.         return retorno;
  55.     }
  56. }

Gracias por cualquier ayuda que me puedan brindar.
Si alguno quisiera probar la aplicacion, les dejo las otras 2 clases.

Código Java:
Ver original
  1. package mantenimiento;
  2.  
  3. public class Usuario {
  4.  
  5.     private String Nombre;
  6.     private String Apellido;
  7.     private String Usuario;
  8.     private String Contraseña;
  9.     private String Perfil;
  10.  
  11.     public String getNombre() {
  12.         return Nombre;
  13.     }
  14.     public void setNombre(String nombre) {
  15.         Nombre = nombre;
  16.     }
  17.     public String getApellido() {
  18.         return Apellido;
  19.     }
  20.     public void setApellido(String apellido) {
  21.         Apellido = apellido;
  22.     }
  23.     public String getUsuario() {
  24.         return Usuario;
  25.     }
  26.     public void setUsuario(String usuario) {
  27.         Usuario = usuario;
  28.     }
  29.     public String getContraseña() {
  30.         return Contraseña;
  31.     }
  32.     public void setContraseña(String contraseña) {
  33.         Contraseña = contraseña;
  34.     }
  35.     public String getPerfil() {
  36.         return Perfil;
  37.     }
  38.     public void setPerfil(String perfil) {
  39.         Perfil = perfil;
  40.     }
  41.  
  42.     public Usuario(String nombre, String apellido, String usuario,
  43.             String contraseña, String perfil) {
  44.         super();
  45.         Nombre = nombre;
  46.         Apellido = apellido;
  47.         Usuario = usuario;
  48.         Contraseña = contraseña;
  49.         Perfil = perfil;
  50.     }
  51. }