0
我正在將數據插入到MYSQL數據庫的臨時表中。我將'Phone'列的大小設置爲VARCHAR(20)並且插入了完全10個字符的數據它是不變的。數據截斷:第1行'Phone'列的數據太長
這裏是我的代碼:
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;
和我收到以下錯誤:
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)
表定義:
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
Insert語句:
insert into temp__final_table(Name,Address,Phone,EmpNo,Age,DeptNo) values ('Clerk#000000959','Skye Norling','2112 Ravine Drive','7091581728','Clerk#000000959','26')
請幫助..
數據太長(顯然) - 在執行它之前吐出插入語句並將其粘貼到此處。 – dwjv
錯誤非常明顯,您的列'phone'對於您嘗試插入的電話號碼來說不夠長。你正在嘗試什麼'phone'值,以及mysql中的列定義是什麼? –
這是一種創建SQL語句的可怕方法。至少看看它是如何在Java教程中完成的:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – Paul