表名:bankuserinfo,表中4个name,id,sex,age.
    
   String strUserName="";
   String strUserID="";
   String strUserSex="";
   String strUserAge="";
   request.setCharacterEncoding("GBK");
   strUserName=request.getParameter("userName");
   strUserID=request.getParameter("userID");
   strUserSex=request.getParameter("usersex");
   strUserAge=request.getParameter("userAge");
   Connection conn=null;
   Statement stmt=null;
   ResultSet rs=null;
   try{
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   
   }catch(ClassNotFoundException e){
      e.printStackTrace();
   }
   
   try{
       String sql="Insert into bankuserinfo Values(?,?,?,?)";
       conn=DriverManager.getConnection("jdbc:odbc:userInfo");
       stmt=conn.createStatement();
       rs=stmt.executeQuery("sql");
   
   }catch(SQLException se){
      se.printStackTrace();
   }为何插入不成功,哪里错了啊,请高手指教,谢谢。 
问题补充:rs=stmt.executeUpdate("sql"); 
为何这句会报错啊? 
还是不行啊?

解决方案 »

  1.   

    你这里应该使用PreparedStatement:
    PreparedStatement pst=con.prepareStatement(sql);
    pst.setString(1,strUserName);
    pst.setString(2,strUserID);
    pst.setString(3,strUserSex);
    pst.setString(4,strUserAge);
    pst.executeUpdate();
    pst.close();
    con.close();
      

  2.   

    executeUpdate返回的是一个整数,指示受影响的行数(即更新计数),所以,你把它强制转换成resultSet就出错了。
      

  3.   

    不建议用access
    最起码也要用Mysql
    access企业真是没人用了。
      

  4.   

    1.你的SQL语句中的占位符没有赋值,调用stmt.setXXX()方法,根据占位符的位置或名字赋值
    2.执行executeUpdate的返回值不是ResultSet,而是int型 的数值。要查询时调用executeQuery方法返回值为ResultSet
      

  5.   

    很明显你的sql中"?"没有赋相应的值,应该是
    pst.setString(1,strUserName); 
    pst.setString(2,strUserID); 
    pst.setString(3,strUserSex); 
    pst.setString(4,strUserAge); 
    加上这些才对