gpt4 book ai didi

带 GUI 的 Java 结果集 SQL

转载 作者:行者123 更新时间:2023-12-01 15:00:12 25 4
gpt4 key购买 nike

我对下面的代码遇到了一个奇怪的问题,它在没有 if else 语句的情况下运行时工作正常,但在使用 if else 时在 jtable 中不显示任何结果。我在这里缺少什么愚蠢的东西吗?

        try {
Class.forName(dbClass);
Connection con = DriverManager.getConnection (dbUrl,dbUsername, dbPassword);
Statement stmt = con.createStatement();

String userQuery = "SELECT p_id AS 'Patient ID', forename AS 'Forename', surname AS 'Surname', address AS 'Address' FROM Patient WHERE surname LIKE '%"+s+"%'";
ResultSet userResult = stmt.executeQuery(userQuery);

if(!userResult.next())
{
JOptionPane.showMessageDialog(null, "No Results.");
{
else{
ResultSetMetaData rsMetaData =userResult.getMetaData();
DefaultTableModel dtm = new DefaultTableModel();
int cols = rsMetaData.getColumnCount();
Vector colName = new Vector();
Vector dataRows = new Vector();

for (int i=1; i<cols; i++){
colName.addElement(rsMetaData.getColumnName(i));
}
dtm.setColumnIdentifiers(colName);

while(userResult.next()){
dataRows = new Vector();
for(int j = 1; j<cols; j++){
dataRows.addElement(userResult.getString(j));
}
dtm.addRow(dataRows);
}
searchTable.setModel(dtm);
con.close();
}
} //end try

catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Database Error.");
e.printStackTrace();
}

catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Database Error.");
e.printStackTrace();
}

我正在使用 netbeans 作为 GUI。

谢谢

最佳答案

连接对象 (con) 应在 if/else block 之外关闭。

此外,userResult.next() 在 else 语句 block 中被调用了两次。

您可以通过用 do while 循环替换 while() 来修复它:

do {
dataRows = new Vector();
for (int j = 1; j < cols; j++) {
dataRows.addElement(userResult.getString(j));
}
dtm.addRow(dataRows);
}
while (userResult.next());

关于带 GUI 的 Java 结果集 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773250/

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