2013-01-13 14 views
21

Tôi đang sử dụng cơ sở dữ liệu Oracle 11g. Khi tôi cố gắng truy cập dữ liệu từ db nó đã hiển thị lỗi java.sql.SQLException: ORA-03115: kiểu dữ liệu mạng không được hỗ trợ hoặc biểu diễn. Tôi không hiểu được điều gì lỗi này có nghĩa là ..java.sql.SQLException: ORA-03115: kiểu dữ liệu mạng không được hỗ trợ hoặc đại diện

mã của tôi là:

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); 
    } 

Bất kỳ một giúp tôi giải quyết vấn đề này ..

Trả lời

74

Thay vì:

rs = ps.executeQuery(Query); 

bạn nên thực hiện:

rs = ps.executeQuery(); 

Nếu không, bạn unprepare tuyên bố của bạn và mất tất cả các thông số bởi vì bạn gán cho nó một câu lệnh SQL mới (mặc dù nó giống nhau).

+0

Codo tuyệt vời. Giải thích tốt quá – Oliver

+0

Chắc chắn giá trị một upvote từ tôi. Ước gì tôi đã googled nó sớm hơn. – JeremyP

0

Thêm cột email

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

xin lỗi tôi quên rằng. Nhưng bây giờ vấn đề vẫn còn ... Tôi nghĩ vấn đề là với tuyên bố chuẩn bị – ajay

0

Lỗi này xuất hiện khi bạn cố gắng để có được một trường theo tên (rs.getString ("uname") trong trường hợp của bạn) mà không có trong resultset.

Và giống như igr đã nói, bạn đang cố gắng để có được trường email (với rs.getString ("email")) và nó không có trong truy vấn, do đó, đây là lỗi của bạn.

Tôi tìm thấy cuộc trò chuyện này vì tôi đã gặp lỗi tương tự trong một ứng dụng khi tôi cố gắng lấy trường có khoảng trống ở cuối chuỗi (rs.getString ("uname") thay vì rs.getString ("uname")

Và tôi chỉ sửa chữa nó bằng cách sử dụng tên chính xác cho trường tôi đã nhận được từ truy vấn

tôi hy vọng nó rất hữu ích;..!)