Ver Mensaje Individual
  #13 (permalink)  
Antiguo 24/04/2016, 18:59
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Excepciones y base de datos

Hola a todos, después de unos de volver a tocar código pude resolver uno de los problemas de MyBroker:

Código Java:
Ver original
  1. @Override
  2.     public void guardame(ArrayList<String> rows, String nombre) {
  3.         try {
  4.             this.objBD.getQuery().getConnection().prepareStatement(this.sqlInsert(nombre));
  5.             this.doInsert(rows);
  6.             this.objBD.getQuery().execute();
  7.         }
  8.         catch(Exception ex){
  9.             System.out.println(ex.getMessage());
  10.         }
  11.     }
  12.     private String sqlInsert(String nombre){
  13.         ArrayList<String> columnas=objBD.obtenerColumnas(objBD.obtenerResultSet("select * from "+nombre));
  14.         String Consulta = "insert into " + nombre + " (";
  15.             for (String columna : columnas) {
  16.                 if (Consulta.endsWith("(") == false)
  17.                     Consulta += ",";
  18.                 Consulta += columna;
  19.             }
  20.             Consulta += ") values (" ;
  21.             for (String columna : columnas) {
  22.                 if (Consulta.endsWith("(") == false)
  23.                     Consulta += ",";
  24.                 Consulta += "?";
  25.             }
  26.             Consulta += ")";
  27.             System.out.println(Consulta);
  28.             return Consulta;
  29.     }
  30.     private void doInsert(ArrayList<String> rows){
  31.         System.out.println("Tamanio: " + rows.size());
  32.         System.out.println("");
  33.         for(int i = 1 ; i < rows.size(); i++){
  34.             System.out.println("Element: " + i);
  35.             try {
  36.                 objBD.getQuery().setObject(i, rows.get(i));                
  37.             }
  38.             catch (Exception ex) {
  39.                 System.out.println(ex.getMessage());
  40.             }
  41.             System.out.println("");
  42.         }
  43.     }

En MyConex.java hice un get del PreparedStatement:

Código Java:
Ver original
  1. private PreparedStatement query;
  2.     public MyConex() { }
  3.    
  4.     public PreparedStatement getQuery() {
  5.         return query;
  6.     }

Y ahora me sale sólo este error:

insert into cargos (carId,carNombre) values (?,?)
Tamanio: 2

Element: 1
Parameter index out of range (1 > number of parameters, which is 0).

Estaba pensando que también puede darme ese error porque el carId es un entero y carNombre es un string, pero en esta línea: objBD.getQuery().setObject(i, rows.get(i)); cómo puedo hacer para lograr que este insert sea genérico de esta forma??

Espero sus respuestas y Saludos