我正在開發一個程序,該程序由用戶想要執行的數字選項進行菜單驅動。在進入2
,允許用戶通過在新的輸入地址來更新其地址,就像這樣:掃描儀拾取垃圾值?
if (edit == 2) {
System.out.print("Please enter your new address: ");
String address = in.nextLine();
stmt.executeUpdate("UPDATE PATIENTS " +
"SET ADDRESS = '" + address + "' " +
"WHERE LOGIN = '" + username + "'");
}
我遇到的問題,因爲一旦用戶輸入選項2
是,他們從來沒有能夠嘗試輸入他們的地址,因爲程序認爲輸入了空值,然後嘗試在數據庫上執行更新語句,由於地址不能爲NULL
,所以失敗。
是否有一個垃圾價值正在拾起我失蹤的原因?對於用戶嘗試使用in.next()
和in.nextInt()
嘗試編輯姓名,年齡等的其他選項,似乎可以正常工作。無論出於何種原因,在用戶有機會輸入任何內容之前,in.nextLine()
默認爲NULL
。
我曾嘗試在讀in.nextLine()
之前放一行。這會阻止程序崩潰,但會切斷地址的數字部分。
這與您遇到的問題無關,但請閱讀有關SQL注入的內容,因爲您的代碼存在一個典型的安全問題:http://www.unixwiz.net/techtips/sql-injection .html – svk 2013-03-15 22:56:48
使用'PreparedStatement'或見面[Little Bobby Tables](http://xkcd.com/327/) – jlordo 2013-03-15 23:04:50
謝謝你們的友好提醒! – raphnguyen 2013-03-15 23:18:24