2013-01-13 8 views
21

Używam bazy danych Oracle 11g. Kiedy próbuję uzyskać dostęp do danych z db, to pokazano błąd java.sql.SQLException: ORA-03115: nieobsługiwany typ danych sieciowych lub reprezentacja. Ja nie rozumiejąc, co oznacza ten błąd ..Wyjaśnienie java.sql.SQLException: ORA-03115: nieobsługiwany typ danych sieci lub reprezentacja

mojego kodu jest:

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

Każdy mi pomóc rozwiązać ten problem ..

Odpowiedz

74

Zamiast:

rs = ps.executeQuery(Query); 

należy wykonać:

rs = ps.executeQuery(); 

przeciwnym razie unprepare swoje oświadczenie i stracić wszystkie parametry, ponieważ można przypisać mu nowy SQL (choć to samo).

+0

Amazing Codo. Dobre wytłumaczenie też – Oliver

+0

Zdecydowanie warte ode mnie przegłosowanie. Szkoda, że ​​wcześniej go nie wylogowałem. – JeremyP

0

Dodaj kolumna email

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

przepraszam zapomniałem że. Ale teraz także problem pozostaje ten sam ... Myślę, że problem jest z przygotowanym oświadczeniem – ajay

0

Ten błąd pojawia się, gdy próbujesz uzyskać pole po nazwie (rs.getString ("uname") w twoim przypadku), którego nie ma w zestawie wyników.

I jak powiedział igr, próbujesz uzyskać pole email (z rs.getString ("email")) i nie jest ono w zapytaniu, więc to jest twój błąd.

Znalazłem tę rozmowę, ponieważ otrzymałem ten sam błąd w aplikacji, gdy próbowałem uzyskać pole z białymi znakami na końcu ciągu (rs.getString ("uname") zamiast rs.getString („uname”)

A ja po prostu naprawić przy użyciu poprawnej nazwy w polu I był już od zapytania

mam nadzieję, że jest użyteczny;..!)

Powiązane problemy