我想調用一個存儲過程,我將7個值插入表中。但下面的代碼不起作用,請告訴我做錯了什麼?無法通過JDBC在oracle中調用存儲過程
我沒有得到任何錯誤,頁面只是保持靜態,雖然成功的查詢執行後,它是假設重定向到一個新的頁面。
public class admincontrol extends TagSupport
{
HttpServletRequest request;
HttpServletResponse response;
String msg="";
public int doStartTag() throws JspException
{
request=(HttpServletRequest)pageContext.getRequest();
response=(HttpServletResponse)pageContext.getResponse();
return EVAL_PAGE;
}
public void check()
{
JspWriter out=pageContext.getOut();
Connection con;
CallableStatement stmt;
ResultSet rs;
try
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex)
{
out.println(ex.getMessage());
}
HttpSession mysession=request.getSession();
String sess=(String)mysession.getAttribute("user");
String rr=(String)adminmodel.time.trim();
String tempid=(String)adminmodel.employeid.trim();
String tdept=(String)adminmodel.department.trim();
String tsup=(String)adminmodel.supervisor.trim();
String tact=(String)adminmodel.action.trim();
String tdate=(String)adminmodel.date.trim();
HttpSession session1=request.getSession();
session1.setAttribute("requestnum",rr);
Random rand = new Random();
int r= rand.nextInt(80001) + 19999;
String reff = String.valueOf(r);
if (!tempid.matches(".*[%#^<>&;'\0-].*") && !tdept.matches(".*
[%#^<>&;'\0-].*") && !tsup.matches(".*[%#^<>&;'\0-].*"))
{
if (tempid.equals(sess))
{
if (adminmodel.department!="" && adminmodel.supervisor!="" && adminmodel.action!="" && adminmodel.date!="" && adminmodel.time!="")
{
try
{
con= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","gaurav","oracle");
stmt=con.prepareCall("begin requestdetail (?,?,?,?,?,?,?); end;");
stmt.setString(1,tempid);
stmt.setString(2,tsup);
stmt.setString(3,tdept);
stmt.setString(4,tact);
stmt.setString(5,tdate);
stmt.setString(6,rr);
stmt.setString(7,reff);
rs=stmt.executeQuery();
response.sendRedirect("requestnum.jsp");
}
catch(SQLException ex)
{
out.println(ex.getMessage());
}
catch(Exception ex)
{
out.println(ex.getMessage());
}
}
else
out.println("Enter complete details");
}
else
out.println("Incorrect Employee Id");
}
else
out.println("Invalid Details ");
}
catch(Exception ex)
{
}
}
public int doEndTag() throws JspException
{
check();
return super.doEndTag();
}
}
下面是存儲過程
create or replace procedure requestdetail (id number, sup varchar2, department varchar2,aaction varchar2, adate number,atime number, ref number)
is
begin
insert into myadmin(employe_id,supervisor,department,action,sdate,stime,reference_no)values (id,sup,department,aaction,adate,atime, ref);
end;
/
'不工作'不是有效或有用的錯誤消息。請始終說出你得到的錯誤或意外行爲,以及你期望發生的事情。我假設你從調用本身得到'錯誤的數字或類型的參數'或'無效標識符'。你的程序也可能是無效的;是第一列真的叫'employe_id',而不是'employee_id'?如果'編譯時有警告',那麼執行'show errors'或'select * from user_errors'來查看錯誤。 –
我已經更新了整個代碼,請看看。我沒有得到任何錯誤,頁面保持靜態,嘗試使用stmt = con.prepareCall(「{call requestdetail(?,?,?,?,?,?,?)}」);和stmt = con。prepareCall(「begin; requestdetail(?,?,?,?,?,?,?); end;」);沒有任何工作 – user3337264
'msg'會發生什麼?如果你沒有得到你期望的重定向,看起來你可能會在某處出現異常。 'tempid'實際上是否匹配'sess' - 聽起來像在管理頁面上會有所不同,但不知道這是做什麼。這看起來像一個JSP調試問題,雖然你現在的DB調用是錯誤的... –