JDBC查詢在Java代碼中失敗,但在Navicat中成功的原因是什么?

jdbc查詢失敗排查:Java代碼與navicat結果差異分析

本文分析一個JDBC查詢問題:sql語句在navicat中執行成功,但在Java代碼中卻失敗。 問題代碼片段(此處應插入圖片,請參考原文圖片)使用了JDBC連接數據庫并執行SQL查詢。Navicat執行結果(此處應插入圖片,請參考原文圖片)顯示兩條數據,但Java代碼無法獲取任何數據。問題位于代碼第66行及其后續語句。

分析表明,問題源于兩方面:

首先,代碼第66行存在參數錯誤。圖片顯示代碼使用了“12”,而sql語句實際參數為“1”。參數不匹配導致查詢結果為空。

其次,代碼使用System.out.println(rs.next())。rs.next()移動結果集游標到下一行,直接打印其結果(布爾值)并不能獲取數據。 因此,第一行數據被跳過,后續操作從第二行開始,導致看起來沒有數據。

立即學習Java免費學習筆記(深入)”;

解決方法

  1. 修正參數: 將代碼第66行中的參數“12”改為正確的“1”。

  2. 改進數據讀?。?/strong> 使用循環遍歷結果集,逐行獲取數據。 例如:

while (rs.next()) {   String column1 = rs.getString("column_name1");   int column2 = rs.getInt("column_name2");   // ... 處理獲取到的數據 ... }

通過修正參數和改進數據讀取方式,即可正確獲取JDBC查詢結果。 避免僅依賴rs.next()判斷數據是否存在,而應結合循環和數據獲取方法來處理結果集。

JDBC查詢在Java代碼中失敗,但在Navicat中成功的原因是什么?

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享