我正在开发一个程序,该程序由用户想要执行的数字选项进行菜单驱动。在进入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