我尝试使用输入作为电话号码属性,在我之前在Oracle 10g数据库中添加的记录中检索单个患者记录的详细信息。即我希望使用手机号码获取单个记录的详细信息。属性。
但是当我点击按钮时,我得到NumberFormatException
。该按钮的actionPerformed
位于:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Connection con = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","passw");
String number = jTextField1.getText().trim(); /fetching the input here*/
int phone = Integer.parseInt(number);/*converting string to integer*/
PreparedStatement ps = con.prepareStatement("SELECT * FROM patient WHERE pphone==?");
ps.setInt(1,phone);
ResultSet rs=ps.executeQuery();
jLabel16.setText("Fetching details, please wait");
jLabel2.setText(rs.getString("pid"));
jLabel3.setText(rs.getString("pname"));
jLabel4.setText(rs.getString("page"));
jLabel5.setText(rs.getString("psex"));
jLabel6.setText(rs.getString("pphone"));
jLabel7.setText(rs.getString("paddress"));
jLabel8.setText(rs.getString("pfamilymembers"));
jLabel16.setText("Details Fetched Successfully");
}
catch(Exception e){
showMessageDialog(null, e);
}
我尝试过之前的帖子,但是他们没有帮助。
如何避免或处理此异常?
答案 0 :(得分:0)
您的输入是否有可能大于Integer.MAX_VALUE,如果是这样,您可以使用Long.parseLong("String")
答案 1 :(得分:0)
你无法避免它。
之后的最后一个代码的值很重要int phone = Integer.parseInt(number);/*converting string to integer*/
您应该在将输入值传递到上下文之前检查/验证输入值。
int phone = -1
if (!String.isEmpty(number))
//proceed
try {
phone = Integer.parseInt(number);/*converting string to integer*/
....
} catch (NumberFormatException e){
throw new Exception("Number is invalid", e);
}
else
throw new Exception ("Number is empty");
答案 2 :(得分:0)
代码现在成功运行,
我使用“valueOf(int)”方法将jTextField值传递给“String”变量而不是int
String number = String.valueOf(getText.jTextField1);