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");//调试性语句
}

解决方案 »

  1.   


    pstmt.setString(1,str[0]);
    pstmt.setString(2,str[1]);
    pstmt.setString(3,str[2]);试试这样呢?
      

  2.   

    数组是String类型   PreparedStatement 的setInt()方法能插String类型的数据? 写错了吧,再说报错的Exception消息打出来呀,不然怎么知道你哪里错了
      

  3.   

    insert的时候,为避免出错,应该尽量将字段和值一一对应指定,你这明显就是因为没有指定字段,将String型插到ID列了,而ID列是整型的,这就报错了。正确的应该是:
    insert into table(身份,账号,密码) values (?,?,?)
      

  4.   

    pstmt.setInt(1,str[0]);
     pstmt.setInt(2,str[1]);
     pstmt.setInt(3,str[2]);
    不要把字符串赋值当int赋值,‘admin’强转string也会报错
      

  5.   

    首先是往PreparedStatement里面传参就错了,setInt只能传int类型的,你可能会需要setString,另外如果你数据库里面的字段不是varchar类型的,传参的时候可能需要转换参数,如:pstmt.setInt(3,Integer.paserInt(str[2]));
      

  6.   

    String str[] = {"admin","200506095430","123"}
    和 
    pstmt.setInt(1,str[0]);
    pstmt.setInt(2,str[1]);
    pstmt.setInt(3,str[2]);
    这里冲突,上面的是String类型的,下面的插入式Int类型的,改下吧,一致就好!!