Ответ 1
Вместо:
rs = ps.executeQuery(Query);
вы должны выполнить:
rs = ps.executeQuery();
В противном случае вы создадите отчет и потеряете все параметры, потому что присваиваете ему новый оператор SQL (хотя он и тот же).
Я использую базу данных Oracle 11g. Когда я пытаюсь получить доступ к данным из db, он показывал ошибку 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);
}
Любой поможет мне решить эту проблему.
Вместо:
rs = ps.executeQuery(Query);
вы должны выполнить:
rs = ps.executeQuery();
В противном случае вы создадите отчет и потеряете все параметры, потому что присваиваете ему новый оператор SQL (хотя он и тот же).
Добавить столбец электронной почты
select uname, email from passmanager where pass=?
Эта ошибка появляется при попытке получить поле по имени (rs.getString( "uname" ) в вашем случае), которое не находится в наборе результатов.
И, как сказал igr, вы пытаетесь получить поле электронной почты (с rs.getString( "email" )), и это не в запросе, так что это ваша ошибка.
Я нашел этот разговор, потому что получал ту же ошибку в приложении, когда пытался получить поле с пробелом в конце строки (rs.getString( "uname" ) вместо rs.getString( "uname" ).
И я просто исправлю это, используя правильное имя для поля, которое я получал от запроса.
Надеюсь, это полезно!;)