Запрос к базе данных Oracle не приводит к JSP

1

Я хотел бы получить данные в базе данных Oracle. Если я использую jsp на Tomcat, это не результат, но если я использую SQLDeveloper, результат будет показан. Обе строки sql равны.

Строка sql:

String q="SELECT pid, pswd, name, lgnpics FROM users WHERE pid='"+ uid + "' and pswd='" + psw + "'";

Связь, утверждение и реализация результатов:

String cs = "jdbc:oracle:thin:@localhost:1521:xe";
Class.forName("oracle.jdbc.OracleDriver");
Connection cn = DriverManager.getConnection(cs, db_user, db_psw);
Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery(q);

Если я его тестирую, набор результатов недоступен, но я знаю, что это ложный результат.

Соединение готово, и если я использую поле, которое не exixts, я получаю сообщение об ошибке, поэтому оператор готов к его использованию.

Заголовок JSP файла:

%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" import="java.sql.*,java.io.*,java.util.*"
    session="true"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

Может ли кто-нибудь помочь мне, почему?

UPDATE1: код, который я тестирую результат:

if (!rs.next()) {
    out.println("NOK: result set is not available");
} else {
    while (rs.next()) {
        out.write("OK: result is available");
    }
}

Заранее спасибо.

  • 0
    Если я проверю его, набор результатов будет недоступен : что это значит? Где читается код из набора результатов. И, пожалуйста, используйте подготовленные операторы , если только вы не хотите, чтобы ваше приложение было целью атак SQL-инъекций.
  • 0
    Вы печатали значения uid и psw? Они, вероятно, не то, что вы думаете.
Показать ещё 4 комментария
Теги:
database
jsp

1 ответ

0
Лучший ответ

просто попробуйте с этим сегментом:

boolean more = rs.next();

if (!more) {
    out.println("NOK: result set is not available");
} else {
    while (more) {
        out.write("OK: result is available");
		.......
		
		more = rs.next();
    }
}

потому что я считаю, что вы можете использовать rs.next() только один раз, когда он указывает на курсор, как вы его называете. поэтому он не достигнет вашего while() цикла, поскольку он уже передан вашим условием if().

Попробуй и посмотри!

  • 0
    Спасибо, это хороший ответ.
  • 0
    рад, что это помогает вам!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню