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() 提升效能。