gpt4 book ai didi

java - 如何在使用 rs.getString 时修复 'terminated'

转载 作者:行者123 更新时间:2023-12-02 09:32:08 25 4
gpt4 key购买 nike

当尝试从 SQL 数据库中提取数据时,我进入了 Java 控制台。

我可以在prepareStatement 中手动输入我的ID,但无法使用setString 来处理prepareStatement。

我没有尝试太多,但我确实发现问题出在 while 语句内。 rs.next 在应该返回 true 时返回 false。 SQL中的信息已经提交,我可以使用读取整个表的函数调用java中的所有信息。

getemployeeDataById("01");
private static void getemployeeDataById(String e_id) {
DBConnection dbConnection = DBConnection.getInstance();
PreparedStatement ps;

try {
ps = dbConnection.getConnection().prepareStatement("select * from employee where E_ID = ?");
ps.setString(1, e_id);
ResultSet rs = ps.executeQuery();

while (rs.next()) {
System.out.println(rs.getString("ename"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

SQL

CREATE TABLE EMPLOYEE
(E_ID CHAR(3) PRIMARY KEY,
ENAME CHAR(25),
DOB CHAR(25),
EMAIL CHAR(25),
PHONE CHAR(25),
ADDRESS CHAR(25));

INSERT INTO EMPLOYEE
VALUES
('01','JEREMY MANN','12/23/1992','jeremy@jeremy.com','317-528-1234','123 CandyCane Lane');

我希望在控制台中输出名称,因此在本例中它将是“JEREMY MANN”。代码运行,然后在 Eclipse Java 控制台中显示应用程序 [Java 应用程序]。它在 while 语句中遇到了问题,但我不确定是什么导致 rs.next 为 false。

最佳答案

在 Oracle 11g 中(一般是 Oracle 版本)CHAR 是固定宽度类型,如果你给它一个比给定宽度短的值,它将用空格填充(如果你刚刚转储,这可能不明显)表内容)。在本例中,您的 key 长度为 3,但字符串“01”的长度为 2,因此这是行不通的。

尝试使用 VARCHAR2 作为列类型,这是一个可变长度字符串。

关于java - 如何在使用 rs.getString 时修复 'terminated',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57878167/

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