problema java mysql
Publicado por carlos adrian soto (3 intervenciones) el 08/02/2012 23:22:51
Hola, de antemano mil graicas por su apoyo.
el problema que tengo es que al ejecutar sentencias sql desde java separadas por (; punto y coma ) me lanza una excepción de sintaxis, pero copio las mismas sentencias y las ejecuto directamente en el cliente querryBrouser de mysql y se ejcutan sin ningun problema.
ahora si ejecuto las consultas una a una no hay problema. por ejemplo:
si creo una tabla con el comando execute y luego nuevamente otra con execute desde java todo funciona bien pero si intento armar una cadena con ambas sentencias y ejecutarlas con un solo update, ahi sale el problema.
he echo varias pruebas y he llegado a la conclusion de que el problema lo genera el (;) como sucede en el siguiente trigger por ejemplo que lanza la siguiente exepcion.
String SQL=" ";
SQL="DELIMITER $$ "+
+ "DROP TRIGGER if exists `xData`"+
+"CREATE TRIGGER `a1`.`xData` "+
"+AFTER UPDATE ON `a1`.`tinfo`" +
+ "FOR EACH ROW BEGIN " +
+ "IF (OLD.Name <> NEW.Name) THEN " +
+ "INSERT INTO tlog (remark) VALUES ('EditData'); " +
+ "END IF; " +
+ "END;" +
+ "$$" +
+ "DELIMITER;";
stmt=con.createStatement();
rs=stmt.execute(SQL);
ecepxion
MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE TRIGGER `a1`.`xData` AFTER UPDATE ON `a1`.`tinfo`IF (' at line 1 "
pero al ejecutarlo directamente en mysql se crea sin ningun problema. y lo que sucede es que lo debo crear desde java.
nuevamnte mil gracias.
el problema que tengo es que al ejecutar sentencias sql desde java separadas por (; punto y coma ) me lanza una excepción de sintaxis, pero copio las mismas sentencias y las ejecuto directamente en el cliente querryBrouser de mysql y se ejcutan sin ningun problema.
ahora si ejecuto las consultas una a una no hay problema. por ejemplo:
si creo una tabla con el comando execute y luego nuevamente otra con execute desde java todo funciona bien pero si intento armar una cadena con ambas sentencias y ejecutarlas con un solo update, ahi sale el problema.
he echo varias pruebas y he llegado a la conclusion de que el problema lo genera el (;) como sucede en el siguiente trigger por ejemplo que lanza la siguiente exepcion.
String SQL=" ";
SQL="DELIMITER $$ "+
+ "DROP TRIGGER if exists `xData`"+
+"CREATE TRIGGER `a1`.`xData` "+
"+AFTER UPDATE ON `a1`.`tinfo`" +
+ "FOR EACH ROW BEGIN " +
+ "IF (OLD.Name <> NEW.Name) THEN " +
+ "INSERT INTO tlog (remark) VALUES ('EditData'); " +
+ "END IF; " +
+ "END;" +
+ "$$" +
+ "DELIMITER;";
stmt=con.createStatement();
rs=stmt.execute(SQL);
ecepxion
MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE TRIGGER `a1`.`xData` AFTER UPDATE ON `a1`.`tinfo`IF (' at line 1 "
pero al ejecutarlo directamente en mysql se crea sin ningun problema. y lo que sucede es que lo debo crear desde java.
nuevamnte mil gracias.
Valora esta pregunta
0