第一次使用PreparedStatement,却出现org.apache.jasper.JasperException: Exception in JSP: /g_gate/gGate/Enrol/EnrolOut.jsp的错误,请问应该如何解决,万分感谢~~
<%
    String sender1=request.getParameter("sender1");
    String sender2=request.getParameter("sender2");
String sfrom="[email protected]";
String strInsert="";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection("jdbc:odbc:db1","sa",null);
PreparedStatement myStatement1 = conn.prepareStatement("insert into email (sfrom,sto1,sto2) values ('"+sfrom+"','"+sender1+"','"+sender2+"')");   
     
 myStatement1.setString(1,sfrom);   
 
myStatement1.setString(2,sender1);   
  
myStatement1.setString(3,sender2);   
  
myStatement1.executeUpdate();   
  
myStatement1.close();  

%>

解决方案 »

  1.   

    看到JSP页面出现JAVA代码 我就头痛0.0...
      

  2.   

    把PreparedStatement myStatement1 = conn.prepareStatement("insert into email (sfrom,sto1,sto2) values ('"+sfrom+"','"+sender1+"','"+sender2+"')");   后面三个参数改成?号
    PreparedStatement myStatement1 = conn.prepareStatement("insert into email (sfrom,sto1,sto2) values (?,?,?)"); 
      

  3.   

    ("insert into email (sfrom,sto1,sto2) values (?,?,?)); myStatement1.setString(1,sfrom);   
     
    myStatement1.setString(2,sender1);   
       
    myStatement1.setString(3,sender2);  这样应该可以了 你试一下
      

  4.   

    1、楼主出的错误也没贴出来。 - -。
    2、
    PreparedStatement myStatement1 = conn.prepareStatement("insert into email (sfrom,sto1,sto2) values ('"+sfrom+"','"+sender1+"','"+sender2+"')");看到这样拼凑的sql就头疼。。   preparedstatement 能动态绑定参数 所以楼主不必那么麻烦
    使用下面语句:PreparedStatement ps = conn.prepareStatement("insert in email (sfrom,sto1,sto2) values(?,?,?)");
    ps.setString(1,sfrom);
    ps.setString(2,sender1);
    ps.setString(3,sender2);
    //【因为上面的三个sfrom和sender1和sender2,都是String类型】int i = ps.executeUpdate(); 
    if(i == 0){
    //SQL未执行成功
    }
    if(ps!=null){
      ps.close();
       //捕获异常
    }
    if(conn!=null){
       conn.close();
    //捕获异常
    }手动打代码有错误请谅解吧、ps.setXXXX【xxxx为类型】   为第几个【?】 绑定参数。
      

  5.   

    修改下:
    if(i == 0){
    //SQL未执行成功
    }
    一般都是判断成功的
    if(i > 0){
        //SQL执行成功
    }else{
        //SQL执行失败
    }