gpt4 book ai didi

java - jsp下oracle数据库查询没有结果

转载 作者:太空宇宙 更新时间:2023-11-04 14:05:26 25 4
gpt4 key购买 nike

我想检索Oracle数据库中的数据。如果我在Tomcat上使用jsp,则没有结果,但如果我使用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);

如果我测试它,结果集不可用,但我知道这是一个错误的结果。

连接已准备就绪,如果我使用不存在的字段,则会收到错误,因此该语句已准备好使用它。

JSP文件的 header 是:

%@ 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"%>

谁能帮我解释一下为什么吗?

更新1:我测试结果的代码:

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() 条件传递。

尝试看看!

关于java - jsp下oracle数据库查询没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28915147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com