需要你对这个错误的帮助,我需要将数组的值插入MySQL中的一行,除了设置为自动增量的主键。但是我遇到这个错误,下面是我的数据库结构和我要插入的代码:
CREATE TABLE `predicted`
(`StudentID` int(10) NOT NULL AUTO_INCREMENT,`Calc1` varchar(50) NOT NULL,
`ProgConcept` varchar(50) NOT NULL,
`English1` varchar(50) NOT NULL,
`Physics1` varchar(50) NOT NULL,
`IntrotoIT` varchar(50) NOT NULL,
PRIMARY KEY (`StudentID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2147483648 ;
并且要插入的代码是:
/**
*
* @author fobia
*/
import java.sql.*;
import java.text.*;
public class arraytodb {
public static void sendtodb(String[]toarray, int lengthofarray){
String db="";
System.out.println("Length of array: "+lengthofarray);
for(int i=0;i<toarray.length;i++){
if(i==0){
db="'"+toarray[i]+"'";
}else{
db=db+"'"+toarray[i]+"'";
}
System.out.println(">>"+toarray[i]+"\t");
}
int counter=1;
for(int a=1;a<Integer.MAX_VALUE;a++){
counter++;
}
//==============================================================================
try{
Connection con = null;
String url = "jdbc:mysql://localhost:3306/thesis";
// String db = "";
String driver = "com.mysql.jdbc.Driver";
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url,"root","");
try{
java.sql.Statement st = con.createStatement();
//int val = st.executeUpdate("INSERT dataset VALUES('019','"+db+")");
int val = st.executeUpdate("INSERT INTO predicted (Calc1, ProgConcept, English1, Physics1, IntrotoIT) VALUES ('"+toarray[0]+"','"+toarray[1]+"' ,'"+toarray[2]+"', '"+toarray[3]+"', '"+toarray[4]+"')");
System.out.println("1 row affected");
}
catch (SQLException s){
s.printStackTrace();
System.out.println("failed");
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
StudentID的输入必须从一个自动递增,这样我就无法得到它并且总是遇到错误
非常感谢你。com.mysql.jdbc.MysqlDataTruncation:数据截断:超出范围 第1行“StudentID”列的值
答案 0 :(得分:1)
您必须增加主键值的大小。在运行时,您输入的值不受INT(10)
的限制。
您必须在案例中增加 int 的主要字段的大小。
答案 1 :(得分:0)
创建时不应尝试插入ID。这就是自动增量色谱柱为您所做的事情;)
除此之外,您尝试插入的值大于列http://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html的最大大小
答案 2 :(得分:0)
指定AUTO_INCREMENT = 2147483648。请删除此声明,它将解决您的问题。
答案 3 :(得分:0)
要么创建具有预定义自动增量字段的表,要么您似乎已达到自动增量字段的最大范围。
使用以下命令将自动增量值重置为1: ALTER TABLE预测AUTO_INCREMENT = 1;
重置时,请确保备份现有数据(如果有)并截断表。否则,将生成主键违规,因为可能存在具有相同密钥的现有数据。