J'insère des données dans la table temporaire dans la base de données MYSQL.J'ai donné la taille de la colonne 'Phone' sous la forme VARCHAR (20) et j'ai inséré exactement 10 caractères et c'est constant.Troncation de données: Données trop longues pour la colonne 'Téléphone' à la ligne 1
Voici mon code:
java.sql.PreparedStatement insertStmt = null;
String insertQuery = "insert into "+tableName+"(";
for(String col : columnList){
insertQuery+=col+",";
}
insertQuery = insertQuery.substring(0,insertQuery.lastIndexOf(","));
insertQuery+=") values (";
for(String col : columnList){
insertQuery+="?,";
}
insertQuery = insertQuery.substring(0,insertQuery.lastIndexOf(","));
insertQuery+=")";
insertStmt = mysqlConn.prepareStatement(insertQuery);
while(rs.next())
{
for(int j=1;j<=columnList.size();j++)
{
insertStmt.setString(j,rs.getString(j).trim());
System.out.println(rs.getString(j).trim());
}
insertStmt.addBatch();
i++;
}
insertStmt.executeBatch();
mysqlConn.setAutoCommit(true);
rs = null;
et je reçois ci-dessous erreur:
java.sql.BatchUpdateException: Data truncation: Data too long for column 'Phone' at row 1
Completed Temp tables 1&2
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1269)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:955)
at MultipleDataExtraction.addDataToTempTable(MultipleDataExtraction.java:132)
at MultipleDataExtraction.addDataToFinalTempTable(MultipleDataExtraction.java:94)
Tableau Définition:
EmpNo varchar(15) YES NULL, Name varchar(18) YES NULL, Address varchar(40) YES NULL, Phone varchar(20) YES NULL, Age varchar(4) YES NULL, DeptNo varchar(20) YES NULL
Insérer déclaration:
insert into temp__final_table(Name,Address,Phone,EmpNo,Age,DeptNo) values ('Clerk#000000959','Skye Norling','2112 Ravine Drive','7091581728','Clerk#000000959','26')
S'il vous plaît aider ..
Les données sont trop longues (évidemment) - crachez l'instruction d'insertion avant de l'exécuter et collez-la ici. – dwjv
L'erreur est assez claire, votre colonne 'phone' n'est pas assez longue pour le numéro de téléphone que vous essayez d'insérer. Quelle est la valeur 'phone' que vous essayez et quelle est la définition de la colonne dans mysql? –
C'est une manière terrible de créer une instruction SQL. À tout le moins, regardez comment cela se fait dans le tutoriel Java: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – Paul