2013-01-13 138 views
21

我正在使用Oracle 11g數據庫。當我嘗試從數據庫訪問數據時,它顯示錯誤java.sql.SQLException:ORA-03115:不支持的網絡數據類型或表示形式。我不明白這是什麼錯誤意味着..java.sql.SQLException:ORA-03115:不支持的網絡數據類型或表示

我的代碼是:

String uname,pass; 
    ResultSet rs = null; 
    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 
    try 
    { 
    uname=request.getParameter("uname"); 
    pass=request.getParameter("pass"); 
    Connection con=prepareConnection(); 
    String Query="select uname from passmanager where pass=?"; 
    PreparedStatement ps=con.prepareStatement(Query); 
    ps.setString(1,pass); 
    rs=ps.executeQuery(Query); 
    if (rs.next() && uname.equalsIgnoreCase(rs.getString("uname")) || uname.equalsIgnoreCase(rs.getString("email"))) { 
    HttpSession session = request.getSession(true); 
    session.setAttribute("uname", rs.getString(1)); 

    ServletContext context = getServletContext(); 
    RequestDispatcher dispatcher = context 
        .getRequestDispatcher("/profile"); 
    dispatcher.forward(request, response); 
    } 

任何一個可以幫助我解決這個問題..

回答

74

而不是:

rs = ps.executeQuery(Query); 

你應該執行:

rs = ps.executeQuery(); 

否則,你取消準備發言和你,因爲你爲它分配一個新的SQL語句失去所有參數(即使它是相同的)。

+0

驚人的科多。很好的解釋 – Oliver

+0

絕對值得我讚賞。希望我早點搜索它。 – JeremyP

0

添加電子郵件列

select uname, email from passmanager where pass=? 
+0

對不起,我忘了。但現在問題仍然是一樣的...我認爲問題是準備好的聲明 – ajay

0

當您嘗試按名稱獲取字段(rs.getString(「uname」))時出現此錯誤,該錯誤不在結果集中。

而且就像igr說的那樣,你試圖得到email字段(使用rs.getString(「email」)),它不在查詢中,所以這是你的錯誤。

我發現了這個對話,因爲我在應用程序中得到了同樣的錯誤,當我試圖在字符串的末尾使用空白字符串(rs.getString(「uname」)而不是rs.getString( 「UNAME」)

我只是使用了正確的名稱,我從查詢得到現場解決它

我希望它是有用的;。!)