如果数据已经存在,如何验证jTextField?

时间:2014-03-09 13:43:43

标签: java swing validation jdbc jtextfield

我有一个框架,可以添加客户信息的新数据。我想在输入现有JTextField时验证我的customerName,一个消息对话框显示“客户名称已存在!”。

这是我将新数据添加到数据库表的代码。我在哪里放置JTextField验证码?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    try {
        cn.connection();
        String sql = "insert into customer(customerName, customerPhone, customerAddress, contactPerson) values('" + customerName.getText() + "','" + customerPhoneTxtField.getText() + "', '"+ textCustomerAddress.getText() +"', '"+contactPersonTxtField.getText()+"')";
        ps = cn.con.prepareStatement(sql);
        ps.execute();
        JOptionPane.showMessageDialog(null, "Customer Successfully Added");

    }
    catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Fill in the field(s) to complete.", "Error", JOptionPane.ERROR_MESSAGE);
    }
}                                     

2 个答案:

答案 0 :(得分:1)

在将数据插入数据库之前,您应该选择一个select语句来检查客户是否存在。

String sql = "SELECT * FROM customer WHERE customerName = '"+JTextfield.getText()+"'";

触发此查询,如果它返回行,那么如果存在客户名称,则该客户名称存在,您可以使用JOptionPane弹出显示。

此代码应放在JButton.actionPerformed

答案 1 :(得分:1)

如果数据库中存在重复条目,则应捕获将引发的异常。

更改catch catch以捕获SQLException,然后使用getSQLState测试这是否是约束错误。当状态为'23'时会发生这种情况。例如

e.getSQLState().startsWith("23");

另一方面,值得思考如何构建代码。遵循MVC模式是将用户界面代码与业务逻辑和数据库代码分离的好方法。例如,尝试将Swing组件移动到与数据库代码不同的类中,这将允许您单独开发和测试每个组件,此外,如果您愿意,它还允许您在将来交换部分应用程序。即如果您决定使用NoSQL数据库而不是SQL DB。