给你一个例子.......... //准备可调用语句对象
CallableStatement cstmt=conn.prepareCall("{?=call test222(?,?,?)}"); //设置输入参数
// cstmt.setString(2,"seven");
//登记输出参数
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.registerOutParameter(2,java.sql.Types.CHAR);
cstmt.registerOutParameter(3,java.sql.Types.VARCHAR);
cstmt.registerOutParameter(4,java.sql.Types.INTEGER);
//输出参数
int intReturn=-99;
String lib_code="lib_code";
String lib_name="lib_name";
int flag=-99; //执行该存储过程并返回结果集
rs=cstmt.executeQuery(); String rs_libcode;
String rs_libname;
int rs_flag;
while (rs.next())
{
//获取来自结果集中的数据
rs_libcode = rs.getString(1);
rs_libname = rs.getString(2);
rs_flag = rs.getInt(3); out.println("rs_libcode="+rs_libcode+"<br>");
out.println("rs_libname="+rs_libname+"<br>");
out.println("rs_flag="+rs_flag+"<br>");
out.println("=====================================================<br>");
} //获取返回值
intReturn = cstmt.getInt(1); //获取输出参数的值
lib_code= cstmt.getString(2);
lib_name= cstmt.getString(3);
flag= cstmt.getInt(4);
//输出
out.println("intReturn="+intReturn+"<br>");
out.println("lib_code="+lib_code+"<br>");
out.println("lib_name="+lib_name+"<br>");
out.println("flag="+flag+"<br>");注意:如果你的存储过程中不返还结果集,你需要用cstmt.executeUpdate()或cstmt.execute(),而不是cstmt.executeQuery();
CallableStatement cstmt=conn.prepareCall("{?=call test222(?,?,?)}"); //设置输入参数
// cstmt.setString(2,"seven");
//登记输出参数
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.registerOutParameter(2,java.sql.Types.CHAR);
cstmt.registerOutParameter(3,java.sql.Types.VARCHAR);
cstmt.registerOutParameter(4,java.sql.Types.INTEGER);
//输出参数
int intReturn=-99;
String lib_code="lib_code";
String lib_name="lib_name";
int flag=-99; //执行该存储过程并返回结果集
rs=cstmt.executeQuery(); String rs_libcode;
String rs_libname;
int rs_flag;
while (rs.next())
{
//获取来自结果集中的数据
rs_libcode = rs.getString(1);
rs_libname = rs.getString(2);
rs_flag = rs.getInt(3); out.println("rs_libcode="+rs_libcode+"<br>");
out.println("rs_libname="+rs_libname+"<br>");
out.println("rs_flag="+rs_flag+"<br>");
out.println("=====================================================<br>");
} //获取返回值
intReturn = cstmt.getInt(1); //获取输出参数的值
lib_code= cstmt.getString(2);
lib_name= cstmt.getString(3);
flag= cstmt.getInt(4);
//输出
out.println("intReturn="+intReturn+"<br>");
out.println("lib_code="+lib_code+"<br>");
out.println("lib_name="+lib_name+"<br>");
out.println("flag="+flag+"<br>");注意:如果你的存储过程中不返还结果集,你需要用cstmt.executeUpdate()或cstmt.execute(),而不是cstmt.executeQuery();
解决方案 »
- 关于cookie实现7天免登陆功能
- 100分!!关于SSH登陆和权限的问题~
- tomcat 6 Context 下面(Value className="org.apache.catalina.values.Remo) Value 配置问题
- 求正则表达式验证字符串
- 怎样实现注册功能?请求帮助!
- javaBean错误
- 请教各位高手:用if else控制两个<tr>,四个<td>的输出问题
- DOM4J的高手请进,dom4j修改tomcat的server.xml的属性后,xml文件格式方式变化,这该如何是好!!!!
- 急!!!!!!!!!!!!!!!!!!
- 为什么css里的ul没反应?其它都有反应。
- jsp数据输出到EXCEL文件?
- 关于JSP页面中传参的问题,很急,多谢各位高手
Connection con = DriverManager.getConnection(url, strDbUser, strDbPass);
CallableStatement cstmt = con.prepareCall("{call SearchLog(?, ?, ?, ?, ?, ?)}");
ResultSet Rs;
if (request.getParameter("Submit") != null){
//按审核标记查询
if (request.getParameter("chkFlags") != null){
cstmt.setInt(2, Integer.parseInt(request.getParameter("rbFlags"), 10));
}
else
cstmt.setNull(2, java.sql.Types.INTEGER);
//按日期查询
if (request.getParameter("chkDate") != null){
cstmt.setString(3, request.getParameter("startDate"));
cstmt.setString(4, request.getParameter("endDate"));
}
else
{
cstmt.setNull(3, java.sql.Types.VARCHAR);
cstmt.setNull(4, java.sql.Types.VARCHAR);
}
//按部门查询
if (request.getParameter("chkDepartment") != null){
cstmt.setInt(5, Integer.parseInt(request.getParameter("Department")));
}
else
cstmt.setNull(5, java.sql.Types.INTEGER);
//按人员查询
if (request.getParameter("chkEmployee") != null)
{
if (request.getParameter("employees") != null)
{
String strEmployees = new String();
int i;
String AEmployees[] = request.getParameterValues("employees");
strEmployees = AEmployees[0];
for (i = 1; i < AEmployees.length; i++)
strEmployees += "," + AEmployees[i];
cstmt.setString(6,strEmployees);
}
else
cstmt.setNull(6, java.sql.Types.VARCHAR);
}
else
cstmt.setNull(6, java.sql.Types.VARCHAR);
try
{
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setInt(1, 0);
Rs = cstmt.executeQuery();
Rs.next();
out.println(cstmt.getInt(1));
}
catch(SQLException e)
{
response.sendRedirect("Inc/ErrPage.jsp?ErrMsg=搜索数据出现了错误!请检查");
}
}以下是错误的信息:java.lang.NumberFormatException:
at java.lang.Integer.parseInt(Integer.java:435)
at java.lang.Integer.<init>(Integer.java:549)
at sun.jdbc.odbc.JdbcOdbcCallableStatement.getInt(JdbcOdbcCallableStatement.java:385)
at jrun__workinglog__SearchList2ejsp1a._jspService(jrun__workinglog__SearchList2ejsp1a.java:153)
at allaire.jrun.jsp.HttpJSPServlet.service(../jsp/HttpJSPServlet.java:39)
at allaire.jrun.jsp.JSPServlet.service(../jsp/JSPServlet.java:228)
at allaire.jrun.jsp.JSPServlet.service(../jsp/JSPServlet.java:196)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1416)
at allaire.jrun.session.JRunSessionService.service(../session/JRunSessionService.java:1082)
at allaire.jrun.servlet.JRunSE.runServlet(../servlet/JRunSE.java:1270)
at allaire.jrun.servlet.JRunRequestDispatcher.forward(../servlet/JRunRequestDispatcher.java:89)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1552)
at allaire.jrun.servlet.JRunSE.service(../servlet/JRunSE.java:1542)
at allaire.jrun.servlet.JvmContext.dispatch(../servlet/JvmContext.java:364)
at allaire.jrun.http.WebEndpoint.run(../http/WebEndpoint.java:115)
at allaire.jrun.ThreadPool.run(../ThreadPool.java:272)
at allaire.jrun.WorkerThread.run(../WorkerThread.java:75)
错误的代码就是out.println(cstmt.getInt(1));
(@RCOUNT int OUT,
@nFlags tinyint = null,
@startDate varchar(10) = null,
@endDate varchar(10) = null,
@DepartmentID int = null,
@EmployeeIDs varchar(1024) = null)
AS
BEGIN
DECLARE @SQL nvarchar(2048)
SET @SQL = "Select * from v_UserLogs where 1 = 1"
IF (@nFlags is not null)
SET @SQL = @SQL + " and workinglogFlags = " + cast(@nFlags as varchar(3));
IF (@startDate is not null) and (@endDate is not null)
SET @SQL = @SQL + " AND LogDate between '" + @startDate + "' and '" + @endDate + "'"
IF (@DepartmentID is not null)
BEGIN
SET @SQL = @SQL + " AND EmployeeID in (select EmployeeID FROM Employee "
SET @SQL = @SQL + " where DepartmentID in "
SET @SQL = @SQL + " (Select DepartmentID from Department where paths like ";
SET @SQL = @SQL + " (Select Paths + '%' from Department where DepartmentID ="
SET @SQL = @SQL + CAST(@DepartmentID as varchar(9)) + ")))";
END
IF (@EmployeeIDs is not null)
SET @SQL = @SQL + " AND EmployeeID in (" + @EmployeeIDs + ")"
EXEC sp_executesql @SQL
SELECT @RCOUNT = @@RowCount
END这个过程我用查询分析器能够得到返回值!以前用ASP也能得到返回值,我晕
//按审核标记查询
if (request.getParameter("chkFlags") != null){
cstmt.setInt(2, Integer.parseInt(request.getParameter("rbFlags"), 10));
}
方法Integer.parseInt()
parseInt("473", 10) returns 473
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
parseInt("1100110", 2) returns 102
parseInt("2147483647", 10) returns 2147483647
parseInt("-2147483648", 10) returns -2147483648
parseInt("2147483648", 10) throws a NumberFormatException
parseInt("99", 8) throws a NumberFormatException
parseInt("Kona", 10) throws a NumberFormatException
parseInt("Kona", 27) returns 411787
上面列的包括正确的和错误的,你应该检查一下数据库中相应字段。
cstmt.setInt(1, 0);?
cstmt.getInt(1);
就会出现java.lang.NumberFormatException: 这个错误 Connection con = DriverManager.getConnection(url, strDbUser, strDbPass);
CallableStatement cstmt = con.prepareCall("{call SearchLog(?, ?, ?, ?, ?, ?)}");
ResultSet Rs;
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
if (request.getParameter("Submit") != null){
//按审核标记查询
if (request.getParameter("chkFlags") != null){
cstmt.setInt(2, Integer.parseInt(request.getParameter("rbFlags"), 10));
}
else
cstmt.setNull(2, java.sql.Types.INTEGER);
//按日期查询
if (request.getParameter("chkDate") != null){
cstmt.setString(3, request.getParameter("startDate"));
cstmt.setString(4, request.getParameter("endDate"));
}
else
{
cstmt.setNull(3, java.sql.Types.VARCHAR);
cstmt.setNull(4, java.sql.Types.VARCHAR);
}
//按部门查询
if (request.getParameter("chkDepartment") != null){
cstmt.setInt(5, Integer.parseInt(request.getParameter("Department"), 10));
}
else
cstmt.setNull(5, java.sql.Types.INTEGER);
//按人员查询
if (request.getParameter("chkEmployee") != null)
{
if (request.getParameter("employees") != null)
{
String strEmployees = new String();
int i;
String AEmployees[] = request.getParameterValues("employees");
strEmployees = AEmployees[0];
for (i = 1; i < AEmployees.length; i++)
strEmployees += "," + AEmployees[i];
cstmt.setString(6,strEmployees);
}
else
cstmt.setNull(6, java.sql.Types.VARCHAR);
}
else
cstmt.setNull(6, java.sql.Types.VARCHAR);
try
{
Rs = cstmt.executeQuery();
out.println(cstmt.getInt(1)); //错误代码就是它
}
catch(SQLException e)
{
response.sendRedirect("Inc/ErrPage.jsp?ErrMsg=搜索数据出现了错误!请检查");
}
}