Я хотел бы получить данные в базе данных 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");
}
}
Заранее спасибо.
просто попробуйте с этим сегментом:
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().
Попробуй и посмотри!