【发布时间】:2017-04-24 12:13:28
【问题描述】:
我想添加新房间,我会在文本字段中输入房间详细信息Room Number, Room type, Bed number and Rates,当我点击保存时,我收到错误java.lang.NumberFormatException: For input string: ""
错误源于at RoomMang.jButton1ActionPerformed(RoomMang.java:352),即fetchFromTextF();函数。见图片:
我使用System.out.println (insertquery); 的插入语句如下所示:
insert into roomdetail(room_no,room_type,room_rate,room_bed)values('','','','');
这就是我从文本字段中获取数据的方式:
public void fetchFromTextF(){
rno=rnumber.getText();
rtype=jTextField2.getText();
rrate=Integer.parseInt(jTextField3.getText());
rbed=jTextField4.getText();
}
这是我执行的保存操作按钮:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
clearTextF();
enableTextF();
String query = "SELECT * FROM roomdetail where room_no like '" + rnumber.getText() + "';";
smt = con.createStatement();
rs1 = smt.executeQuery(query);
if (!rs1.next()) {
try {
if (evt.getActionCommand().equals("Save")) {
fetchFromTextF();
int code = JOptionPane.showConfirmDialog(this, "Information of Room No." +rno+ " will be added in database.", "Confirmation", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
if (code == JOptionPane.YES_OPTION) {
String insertquery = "insert into roomdetail(room_no,room_type,room_rate,room_bed)values('" +rno + "','" + rtype + "'," + rrate + ",'" + rbed + "');";
smt = con.createStatement();
int success = smt.executeUpdate(insertquery);
if (success > 0) {
JOptionPane.showMessageDialog(this, "Record Saved");
jButton1.setText("New");
} else {
JOptionPane.showMessageDialog(this, "Problem in Saving. Retry");
}
} else {
}
} else if (evt.getActionCommand().equals("New")) {
clearTextF();
jButton1.setText("Save");
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(this, "Room No. already used, Give another Room No.");
}
} catch (Exception ex) {
}
}
【问题讨论】:
-
显示你的堆栈跟踪,以便我们可以看到它发生在哪里。虽然我猜它发生在你拥有的 that sql insert 上。使用 PreparedStatement 来避免这些错误和可能的 sql 注入攻击,请参阅docs.oracle.com/javase/7/docs/api/java/sql/…