日期:2014-05-20  浏览次数:20738 次

java往SQL Server中插入数据插不进去
sql中生成了一个用户表,有4个字段,分别是ID(数据库中设定了自动生成,就是为了计数用),身份(varchar型数据),账号(varchar型数据),密码(varchar型数据),但是利用java语句往里边插不进数据。请各位前辈帮忙给指点一下吧,谢谢你们了,
代码如下“
public void connectJDBC(){
Connection conn = null;
PreparedStatement pstmt = null;
String str[] = {"admin","200506095430","123"}


try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=学生选课系统","sa","123");

pstmt = conn.prepareStatement("insert into table values (?,?,?)");
pstmt.setInt(1,str[0]);
pstmt.setInt(2,str[1]);
pstmt.setInt(3,str[2]);

pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(pstmt != null){
pstmt.close();
pstmt = null;
}
if(conn != null){
conn.close();
conn = null;
}
}catch (SQLException e){
e.printStackTrace();
}
}

System.out.println("lianshangshujnuku");//调试性语句
}

------解决方案--------------------

pstmt.setString(1,str[0]);
pstmt.setString(2,str[1]);
pstmt.setString(3,str[2]);

试试这样呢?
------解决方案--------------------
我还没学到这里 先给你顶顶哈 把你的问题mark下来,我感觉以后我会遇到的
------解决方案--------------------
系统报啥错啊大哥,你总得告诉下吧
------解决方案--------------------
数组是String类型   PreparedStatement 的setInt()方法能插String类型的数据? 写错了吧,再说报错的Exception消息打出来呀,不然怎么知道你哪里错了
------解决方案--------------------
太不专业了。你说错了,错误原因贴出来。。。从语句可以看出,是连接数据库错误,还是插入语句错误
------解决方案--------------------
insert的时候,为避免出错,应该尽量将字段和值一一对应指定,你这明显就是因为没有指定字段,将String型插到ID列了,而ID列是整型的,这就报错了。正确的应该是:
insert into table(身份,账号,密码) values (?,?,?)
------解决方案--------------------
pstmt.setInt(1,str[0]);
 pstmt.setInt(2,str[1]);
 pstmt.setInt(3,str[2]);
不要把字符串赋值当int赋值,‘admin’强转string也会报错
------解决方案--------------------
首先是往PreparedStatement里面传参就错了,setInt只能传int类型的,你可能会需要setString,另外如果你数据库里面的字段不是varchar类型的,传参的时候可能需要转换参数,如:pstmt.setInt(3,Integer.paserInt(str[2]));
------解决方案--------------------
String str[] = {"admin","200506095430","123"}
和 
pstmt.setInt(1,str[0]);
pstmt.setInt(2,str[1]);
pstmt.setInt(3,str[2]);
这里冲突,上面的是String类型的,下面的插入式Int类型的,改下吧,一致就好!!