String sql = "{call ylp_UserVertify(?,?,?)}";
try{
CallableStatement cstmt = con.prepareCall(sql);
cstmt.setString(1, sjhm);
cstmt.setString(2, fwmm);
cstmt.registerOutParameter(3, Types.INTEGER); //返回码 cstmt.executeUpdate(); if (cstmt.getInt(3)!=0){
cstmt.close();
ErrText = "用户鉴权确认失败!";
return false;
}else{
SystemLog log=new SystemLog(con);
log.insertLog("4", staffid, "用户鉴权确认,号码为:'" + sjhm + "'");
log.close();
cstmt.close(); ErrText = "";
return true;
}
}catch(Exception e){
ErrText=e.toString();
return false;
}

解决方案 »

  1.   

    String sql = exec [store proc name] [parameter1,parameter2,....];
    then execute it.
      

  2.   

    学习too,那存储过程该存放在哪里呢?
      

  3.   

    public String executeProc(String IDName)
    {
    String returnstr,sqlstr,rsstr;
    rs=null;
    sqlstr = "{call PROC_AUTOID(?,?)}"; 
    try
    {
    if (conn!=null)
           {
        conn.close();
           }
               conn = DriverManager.getConnection(sConnStr,UseName,PassWord);
       CallableStatement stmt = conn.prepareCall(sqlstr);
       stmt.setString(1,IDName); 
       stmt.registerOutParameter(2,Types.CHAR); 
       rs=stmt.executeQuery();
       rs.next();
       rsstr = rs.getString(1); 
       returnstr = stmt.getString(2);
       rs.close();
       stmt.close();
       conn.close();
    }
    catch (Exception erproc)
    {
      return null;
    }
    return returnstr;
    }把这个函数写在BEAN中,然后在JSP页面中调用就可以了
    什么?存储过程在那里不知道,在数据库内部
      

  4.   

    能告诉我在jsp+servlet+javabean中,再写存储过程的必要性大吗?
      

  5.   

    jsp连接Sql Server7.0/2000数据库  
    testsqlserver.jsp如下:  
    <%@ page contentType="text/html;charset=gb2312"%>    
    <%@ page import="java.sql.*"%>  
    <html>    
    <body>    
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    //pubs为你的数据库的 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    String sql="select * from test"; 
    ResultSet rs=stmt.executeQuery(sql); 
    while(rs.next()) {%>    
    您的第一个字段内容为:<%=rs.getString(1)%>    
    您的第二个字段内容为:<%=rs.getString(2)%>    
    <%}%>    
    <%out.print("数据库操作成功,恭喜你");%>    
    <%rs.close(); 
    stmt.close(); 
    conn.close(); 
    %>    
    </body>    
    </html>  
      

  6.   

    我想用的存储过程没有输入,输出参数,主要是由于select语句太长,至少十多行,我不想写在JSP中,才写在了存储过程里。
    遇到这种情况,大家看看怎么帮我解决啊在JSP中,有没有用存储过程的必要。
      

  7.   

    jsp连接Sql Server7.0/2000数据库  
    testsqlserver.jsp如下:  
    <%@ page contentType="text/html;charset=gb2312"%>    
    <%@ page import="java.sql.*"%>  
    <html>    
    <body>    
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    //pubs为你的数据库的 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password); 
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    String sql="select * from test"; 
    ResultSet rs=stmt.executeQuery(sql); 
    while(rs.next()) {%>    
    您的第一个字段内容为:<%=rs.getString(1)%>    
    您的第二个字段内容为:<%=rs.getString(2)%>    
    <%}%>    
    <%out.print("数据库操作成功,恭喜你");%>    
    <%rs.close(); 
    stmt.close(); 
    conn.close(); 
    %>    
    </body>    
    </html>  
      

  8.   

    我想用的存储过程没有输入,输出参数,主要是由于select语句太长,至少十多行,我不想写在JSP中,才写在了存储过程里。
    遇到这种情况,大家看看怎么帮我解决啊在JSP中,有没有用存储过程的必要。
      

  9.   

    呵呵,当然有用存储过程的必要性阿,存储过程经过预编译的,运行效率要高一些--当然也不能把什么SQL操作都写成存储过程,那样服务器会负担很重。挑选花时间的复杂查询、统计之类的作成存储过程是有必要的。不好意思,上面的例子没有注释,不过好像都比较简单,第一行指出调用的存储过程,以及参数(包括入参和出参),注意要用{}把调用的语句包括起来。
    接下来, cstmt.setString(1, sjhm);cstmt.setString(2, fwmm);是将两个入参传给存储过程; cstmt.registerOutParameter(3, Types.INTEGER); 是注册返回参数并登记其数据类型;指定完参数后就是执行存储过程了,cstmt.executeUpdate();因为ylp_UserVertify这个存储过程是一个对数据操作的存储过程所以调用executeUpdate(),如果你的存储过程是查询的话那就是调用executeQuery()了。
    最后就是处理返回参数了,当然,如果是查询操作的话那就要处理结果集了。
    注意,存储过程是可以以三种方式来返回的:返回参数、结果集、返回码