快手徐州金链子:在JSP中调用存储过程的错误,谁能告诉我那里错了吗?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 22:21:05
存储过程ISMASTER:
CREATE PROCEDURE DBO.ISMASTER
@IM CHAR(20),
@OMM CHAR(20) OUTPUT
AS

IF @IM='N'
SELECT @OMM=ISMASTER FROM USERPASSWORD WHERE ISMASTER='Y';

ELSE
SELECT @OMM=ISMASTER FROM USERPASSWORD WHERE ISMASTER='Y';
GO
JSP1页面:
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookshop";
Connection con= DriverManager.getConnection(url,"sa","");
Statement smt=con.createStatement();
ResultSet rs;
String sql;
%>
JSP页面2:
<%@page import="java.sql.*"%>
<%@page import="java.text.*"%>
<%@page contentType="text/html;charset=GB2312"%>
<%@include file="opendata.jsp"%>

<%
String strSQL = "{call ISMASTER(?,?)}";
String c="N";
CallableStatement stmt = con.prepareCall(strSQL);
//第一个参数为in的话
stmt.setString(1,c);//设置参数值
//第二个参数作out的话
stmt.registerOutParameter(1,java.sql.Types.CHAR);//设置参数类型
stmt.execute();
String paraValue = stmt.getString(2);//得到out参数值
out.println("Procedure output is :"+paraValue);
%>
编译时到stmt.execute();这里就出现错误:
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.admin.ceshi_005fproduce.mainform_jsp._jspService(mainform_jsp.java:106)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
我试了。提示错误javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.(好像是创建socket错误)

String strSQL = "{call ISMASTER(?,?)}";
应该为
String strSQL = "{call ISMASTER[(?,?)]}";
试一试