Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/04/2006, 17:46
luiyirockero
 
Fecha de Ingreso: abril-2006
Mensajes: 6
Antigüedad: 18 años, 2 meses
Puntos: 0
Problema con INSERT en BD, Ayuda!

Saludos. En mi reciente aprendizaje de java, estoy aprendiendo también como conectar el java con BDs access, mysql etc...estoy teniendo un problema y me gustaria saber si me pueden dar un norte de por donde esta el problema.

Tengo un proyectito de prueba, que consta de 3 clases: ConexionAccess.java, Producto.java y Gui.java. todas operan en modo terminal (consola). Bien, el asunto es, que al Correr Gui.java Gui este envia efectivamente los datos a procesar a la clase Producto.java que contiene implementaciones getXXX, setXXX para los campos de la tabla "producto" de mi base de datos; Gui luego, hace un llamado a ConexionAccess.java con un atributo producto como parametro que es resultado de una instancia de la clase producto para un nuevo producto a insertar o bien procesar. Por ultimo, la clase ConexionAccess.java toma esos datos y (en teoria) los guarda en la tabla producto. El problema esque ,luego de verificar con algunos printlns en la clase ConexionAccess, si los datos en realidad llegan a la clase(lo cual si hacen efectivamente) por alguna razon extraña la instrucción no se ejecuta.

Los segmentos de codigo son estos:
(Gui.java enviando datos)

try{
Producto producto = new Producto();
producto.setId("1");
producto.setDesc("estufa");
producto.setPrecio("100");
producto.setStock("200");
System.out.println("enviando datos...");
cnxA.agregarProducto( producto );
}

Hasta aqui todo funciona bien.....luego,

(ConexionAccess.java recibe efectivamente, pero executeUpdate() no actualiza el string sql):

public void agregarProducto(Producto producto) throws SQLException
{
try
{
System.out.println("iniciando...");
conexion.setAutoCommit(false);
String sql = "insert into producto(id,desc,precio,stock) values (?,?,?,?)";
PreparedStatement preparedStatement = conexion.prepareStatement(sql);
System.out.println("recogiendo datos...");
preparedStatement.setString(1,producto.getId());
preparedStatement.setString(2,producto.getDesc());
preparedStatement.setString(3,producto.getPrecio() );
preparedStatement.setString(4,producto.getStock()) ;
System.out.println(producto.getId());
System.out.println(producto.getDesc());
System.out.println(producto.getPrecio());
System.out.println(producto.getStock());

System.out.println("datos obtenidos");
System.out.println(sql); /*a ver si se actualiza*/

preparedStatement.executeUpdate();

System.out.println(sql); /*otra vez a ver si se actualiza pero no lo hace*/
System.out.println("guardado...");
conexion.setAutoCommit(true);
conexion.commit();
System.out.println("guardado...");
preparedStatement.close();

}

catch(SQLException sqex)
{
conexion.rollback();
conexion.close();
}
finally{};
}

Pero ninguna instrucción se ejecuta luego del preparedStatement.executeUpdate();

algo pasa que no se termina de ejecutar el resto de lineas, aunque el programa en compilacion y ejecucion no devuelve ningun error.

No sé si en la seccion que escribi String sql = "insert into producto(id,desc,precio,stock) values (?,?,?,?)"; radica el problema, y si sea correcto usar el ?,?,?,? que usé.

Agradezco de antemano su ayuda con el tema.

Luiyi.