Java - error al usar alter table en java me da error en el tamaño del valor del tipo de dato

   
Vista:

error al usar alter table en java me da error en el tamaño del valor del tipo de dato

Publicado por jesus (3 intervenciones) el 08/04/2015 16:05:55
Estimados amigos, podrían por favor ayudarme? tengo un problema bastante básico pero no encuentro aun la salida.

tengo un sentencia sql con la cual modifico el nombre de las columnas en mi base de datos, tengo un jlist en el cual elijo el nombre de la columna que deseo cambiar y jtxtfield en el que el usuario me ingresa el valor con el que reemplazara el nombre antiguo de la columna, ambos valores los paso a mi sentencia sql de la siguiente manera.

stmt=conn.createStatement();

String query="ALTER TABLE "+ nombredetabla +"CHANGE" + tomaItem + salida +"VARCHAR(10)";
" tomaitem" es el valor que tomo del jlist y "salida" es el
stmt.execute(query);

El problema me lo marca en el tamaño del varchar. pongo el trace con el error.

Desde ya Muchas Gracias.

ql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(10)' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alberto

error al usar alter table en java me da error en el tamaño del valor del tipo de dato

Publicado por Alberto (238 intervenciones) el 08/04/2015 17:51:59
Hola...

Lo mas seguro que se debe a la forma en que estas pasando los parámetros, irónicamente aunque para nosotros es correcto concatenar las variables, el PreparedStatement no interpreta la concatenación de manera correcta por lo que regularmente pueden ocurrir errores al interactuar con la base de datos. A continuación, te proporciono un código sencillo de como pasar los parámetros en sentencias desde Java.

1
2
3
4
5
PreparedStatement stmt = tu_conexion.prepareStatement("ALTER TABLE ? CHANGE ? ? VARCHAR(10)");
stmt.setString(1, nombredetabla);
stmt.setString(2, tomaItem);
stmt.setString(3, salida);
stmt.executeUpdate();

Automáticamente la clase PreparedStatement interpreta el signo ? como un parámetro por lo que solo es cuestión de hacer la consulta pero sustituyendo los valores a cambiar por dicho signo, posteriormente, pasamos un valor a ese parámetro a través del método setString(), cabe mencionar que no solo existe este método también puedes encontrar setInt(), setBoolean(), etc. aunque regularmente el mas implementando es el método que puedes ver en tu el código que te proporcione, dicho método recibe dos parámetros, el primero significa la posición que ocupa en el a sentencia (Izquierda - Derecha), siempre empezando por el valor 1, en este caso NO aplica el index 0, y el segundo el String a pasar.

No obstante, a juzgar por el error se debe mas a problemas de la gramática en la sentencia ALTER, te aconsejaría primeramente ejecutar la consulta en tu motor de base de datos para ver si esta bien la sintaxis, y ver la documentación de tu gestor de base de datos para ver cual es la estructura correcta.

Cualquier duda y/o comentario, aquí estamos. Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

error al usar alter table en java me da error en el tamaño del valor del tipo de dato

Publicado por jesus (3 intervenciones) el 09/04/2015 00:36:49
Millones de gracias por la respuesta y que no tardaron nada en responderme, encontre la solución,pero el metodo que me pasaste me resulta mas eficiente, usaré el método del ejemplo que me pasastes.

Dejo la forma en la que lo solucione por si a alguien le sirve.

Class.forName(driver);
Connection conn= DriverManager.getConnection(url,username,password);

stmt=conn.createStatement();

String query="ALTER TABLE "+nombredetabla+" CHANGE "+tomaItem+" "+salida+" VARCHAR(100)";
stmt.execute(query)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando

error al usar alter table en java me da error en el tamaño del valor del tipo de dato

Publicado por Fernando (82 intervenciones) el 09/04/2015 18:47:22
hola que tal , imagino que estas utilizando el try catch para manejar las exepciones producidas o errores , deberias provar la sentencia sin las variables a ver si te genera el mismo error, por lo que leo el error esta en el tamano del varchar(10) no se que tanto te afecte mover este parametro pues si antes tenias tipo date y le das alter a varchar seguro tendras algun tipo de problema o consistencia en la informacion , has la prueba sin las variables aun que creo que el error esta en cambiar el tipo de campo en la tabla , en esta direccion existen algunas consideraciones oajal lo resuelvas http://www.mysqlya.com.ar/temarios/descripcion.php?cod=48&punto=51 .

saludes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar