首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JDBC 批次匯入文字檔:StringTokenizer 解析欄位數不符導致資料錯位

     編輯:程式設計綜合問答

原始解析


StringTokenizer t = new StringTokenizer(str);
t.nextToken(); // 序號
sno = t.nextToken(); // 學號
sn = t.nextToken();  // 姓名
if (tokenCount > 7) dept = t.nextToken(); // 系所

問題

檔案實際每行只有 **3 欄位**(學號、姓名、系所),但代碼先消費一個「序號」再讀學號,導致後續欄位全部左移一位,寫入資料庫時學號欄位存入姓名、姓名存入系所。

修正


StringTokenizer t = new StringTokenizer(str);
sno = t.nextToken(); // 直接讀學號
sn = t.nextToken();  // 姓名
dept = t.hasMoreTokens() ? t.nextToken() : ""; // 系所(可選)

建議

  • 先印出 t.countTokens() 確認欄位數。
  • 改用 str.split("\\s+") 取得陣列,按索引存取更直觀。
  • 批次插入使用 PreparedStatement.addBatch() 提升效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved