我正在創建一個使用自定義標籤的登錄頁面,在下面的代碼中,我想執行一個存儲的oracle函數,其中該函數將使用2個參數(名稱,密碼)進行身份驗證並返回一個數字。但是,當我編譯下面的代碼,它給出了一個錯誤說(發現:int)不兼容的類型。請告訴我我哪裏錯了?我是否正確調用該函數?下面如何從jdbc調用存儲函數?
package pack.java;
import pack.java.MyModel;
import java.io.*;
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.sql.*;
public class MyController extends TagSupport
{
HttpServletRequest request;
HttpServletResponse response;
public int doStartTag()throws JspException
{
request=(HttpServletRequest)pageContext.getRequest();
response=(HttpServletResponse)pageContext.getResponse();
return EVAL_PAGE;
}
public void check()
{
HttpSession mysession=request.getSession();
Connection con;
CallableStatement stmt;
JspWriter out=pageContext.getOut();
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex)
{
}
try
{
String aa=(String)MyModel.name.trim();
String bb=(String)MyModel.pass.trim();
con= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","gaurav","oracle");
stmt=con.prepareCall("select usercheck1(?,?) from dual");
stmt.setString(1,aa);
stmt.setString(2,bb);
rs=stmt.executeQuery();
try
{
while (rs.next())
{
String empid=rs.getString (1);
mysession.setAttribute("user",empid);
if(empid!=null)
{
response.sendRedirect("/Myjsp/selectaction.jsp");
}
else
out.println("InValid User");
}
catch(Exception ex)
{
}
}
catch(SQLException ex)
{
}
}
public int doEndTag() throws JspException
{
check();
return EVAL_PAGE;
}
}
是存儲功能
create or replace function usercheck1
(uname varchar2, upass varchar2)
return number
as
numb number;
begin
select (employe_id) into numb from record where name=uname and password=upass;
return numb;
end usercheck1;
/
使用下面的語句
select usercheck1 ('ghg','aa')from dual;
錯誤報告在哪一行上? – Stephan
它說不兼容的類型 found:int, required:java.sql.ResultSet, on line rs = stmt.executeUpdate(); – Gaurav
在不久的將來,請到[代碼評論](http://codereview.stackexchange.com)進行評論。 –