Foros del Web » Programación para mayores de 30 ;) » Java »

Error en java con mysql

Estas en el tema de Error en java con mysql en el foro de Java en Foros del Web. Este es el error que me da: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'Tienda1' at row 1 y este es el string que ...
  #1 (permalink)  
Antiguo 11/10/2012, 03:28
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Error en java con mysql

Este es el error que me da:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'Tienda1' at row 1


y este es el string que tengo para crear la tabla:

String createString =
"create table if not exists Jugadores (Nmov INTEGER(5),"+"numeroJugada VARCHAR(5), "+"nombreJugador VARCHAR(5), " +"posicionX INTEGER(10), " +"posicionY INTEGER(10), " +"dineroAcumulado VARCHAR(30), " +"Tienda0 VARCHAR(30)," +"Tienda1 VARCHAR(30), " +"Tienda2 VARCHAR(30))";


Gracias!!!
  #2 (permalink)  
Antiguo 11/10/2012, 13:03
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Error en java con mysql

Imagino que no te da error al crear la tabla, sino al meter datos. Te avisa que un string que estas intentando guradar en Tienda1 es demasiado largo (más de 30 caracteres).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 11/10/2012, 15:18
Avatar de Gck_Wolf  
Fecha de Ingreso: enero-2011
Mensajes: 11
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Error en java con mysql

(Nmov INTEGER(5),"+"numeroJugada VARCHAR(5), "+"nombreJugador VARCHAR(5), " +"posicionX INTEGER(10), " +"posicionY INTEGER(10), " +"dineroAcumulado VARCHAR(30), " +"Tienda0 VARCHAR(30)," +"Tienda1 VARCHAR(30), " +"Tienda2 VARCHAR(30))";. en cada uno has declarado un valor. si te fijas, esos son la cantidad de caracteres que vas a meter como máximo. sin embargo en uno de ellos estas colocando un valor con una cantidad de caracteres mayor a que que puede contener. checa en cual es la que fallas
  #4 (permalink)  
Antiguo 16/10/2012, 02:29
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error en java con mysql

Y no puede ser otra cosa??es que he comprobado los caracteres y no se pasan de 30. También he probado con un VARCHAR(1000) y me da el mismo error.

Gracias de todas formas.
  #5 (permalink)  
Antiguo 18/10/2012, 12:45
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Error en java con mysql

cual es el codigo que usas para el insert ? si lo posteas tal vez ahy encontremos el error del porque esta ingresando un valor prolongado
  #6 (permalink)  
Antiguo 19/10/2012, 14:03
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error en java con mysql

El código:

stmt.executeUpdate("INSERT INTO Jugadores values ('"+j1.numeroTienda()+"','"+nJugada+"','Jugador1', '"+pj1X+"','"+pj1Y+"','"+j1.devuelveDinero()+"','" +nTiendaImprimir1[0]+"','"+nTiendaImprimir1[1]+"','"+nTiendaImprimir1[2]+"')");

nTiendaImprimir es array de string, que es donde me da problemas...

Graciaaaas!!
  #7 (permalink)  
Antiguo 19/10/2012, 14:08
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error en java con mysql

Los valores de nTiendaImprimir1 es Charcuteria unas veces y en ocasiones está vacío.
  #8 (permalink)  
Antiguo 19/10/2012, 19:12
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Error en java con mysql

intenta recorrer el array , setea los strings y crea un insert por cada elemento , supongo que lo que el statement esta haciendo es juntar los elementos del array e intenta hacer un insert acumulado

utiliza un insert como ejemplo de

PreparedStatement pst = cn.prepareStatement("Insert into tabla(Campo1,Campo2)values(?,?)");
pst.setString(1,valorArrayCampo1);
pst.setString(2,valorArrayCampo2);

pst.executeUpdate;

en el que al recorrer tu array le pasaras como parametro el valor del array en un bucle for, intentalo y me dices que tal
  #9 (permalink)  
Antiguo 20/10/2012, 07:02
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error en java con mysql

Este es el código que pongo:

PreparedStatement pst = con.prepareStatement("insert into jugadores(Campo1,Campo2,Campo3,Campo4,Campo5,Campo 6,Campo7,Campo8,Campo9,Campo10,Campo11,Campo12,Cam po12,Campo14,Campo15,Campo16,Campo17,Campo18,Campo 19,Campo20,Campo21,Campo22,Campo23,Campo24,Campo25 ,Campo26,Campo27,Campo28,Campo29,Campo30,Campo31,C ampo32,Campo33,Campo34,Campo35,Campo36) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?)");
pst.setInt(1,j1.numeroTienda());
pst.setString(2,"nJugada");
pst.setString(3, "Jugador1");
pst.setInt(4, pj1X);
pst.setInt(5, pj1Y);
pst.setInt(6, j1.devuelveDinero());
int nu=7;
for(int i=0;i<30; i++){
nu=nu+i;
pst.setString(nu,"nTiendaImprimir1[i]");
}
pst.executeUpdate();

Pero me da este error: Parameter index out of range (43 > number of parameters, which is 36).

Guardo 36 valores en la tabla...30 vienen del array y son String.

Muchas gracias por la ayuda!!
  #10 (permalink)  
Antiguo 20/10/2012, 07:05
 
Fecha de Ingreso: julio-2012
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Error en java con mysql

String createString =
"create table if not exists Jugadores (Nmov INTEGER(20),"+"numeroJugada VARCHAR(20), "+
"nombreJugador VARCHAR(20), " +"posicionX INTEGER(10), " +"posicionY INTEGER(10), " +"dineroAcumulado VARCHAR(20), " +"Tienda0 VARCHAR(30)," +"Tienda1 VARCHAR(30), " +"Tienda2 VARCHAR(30), " +"Tienda3 VARCHAR(30), " +"Tienda4 VARCHAR(30), " +"Tienda5 VARCHAR(30), " +"Tienda6 VARCHAR(30), " +"Tienda7 VARCHAR(30), " +"Tienda8 VARCHAR(30)" +
", " +"Tienda9 VARCHAR(30), " +"Tienda10 VARCHAR(30), " +"Tienda11 VARCHAR(30), " +"Tienda12 VARCHAR(30), " +"Tienda13 VARCHAR(30), " +"Tienda14 VARCHAR(30), " +"Tienda15 VARCHAR(30), " +"Tienda16 VARCHAR(30), " +"Tienda17 VARCHAR(30), " +"Tienda18 VARCHAR(30)" +
", " +"Tienda19 VARCHAR(30), " +"Tienda20 VARCHAR(30), " +"Tienda21 VARCHAR(30), " +"Tienda22 VARCHAR(30), " +"Tienda23 VARCHAR(30), " +"Tienda24 VARCHAR(30), " +"Tienda25 VARCHAR(30), " +"Tienda26 VARCHAR(30), " +"Tienda27 VARCHAR(30), " +"Tienda28 VARCHAR(30)" +
", " +"Tienda29 VARCHAR(30))";


Así creo la tabla.
  #11 (permalink)  
Antiguo 20/10/2012, 12:43
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Error en java con mysql

OK maso voy encontrando el problema , primero tienes que asignar el valor de tu array a un string correspondiente a cada campo es decir string tienda0 = array0 , string tienda1 = array1
, una vez que terminaste de reccorrer tu array asignar el string le das el valor a tu preparedstatement uno por cada campo y despues de asignarlos executas el update , es la solucion mas proxima que encuentro , no tengo mucha experiencia en java pero creo que seria una solucion tal vez extensa en escribir el codigo pero mas a la segura , igualmente si alguien mas tiene una idea para simplificar el codigo espero nos pueda ayudar , el problema segun parece que te dio en el metodo es porque le estabas pasando una cantidad mayor de parametros de entrada que de los que son realmente es decir 43 entradas x 36 campos , te aconsejarias antes verifiques con una salida a la consola los valores que te regresa al recorrer tu array de cualquier manera analizo tu codigo y hago unos ejercicios y te oriento mejor el lunes suerte

Etiquetas: mysql, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:04.