【问题标题】:How to validate jTextField if data is already exists?如果数据已经存在,如何验证 jTextField?
【发布时间】:2014-04-12 12:56:52
【问题描述】:

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

这是我将新数据添加到我的数据库表的代码。我应该把那些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);
    }
}                                     

【问题讨论】:

    标签: java swing validation jdbc jtextfield


    【解决方案1】:

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

    更改您的 catch 块以捕获 SQLException,然后使用 getSQLState 测试这是否是一个约束错误。这将在状态为“23”时发生。例如

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

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

    【讨论】:

      【解决方案2】:

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

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

      触发此查询,如果它返回行,则如果客户名称存在,则该客户名称存在,在这种情况下,您可以使用 JOptionPane 显示弹出窗口。

      此代码应输入JButton.actionPerformed

      【讨论】:

      • 谢谢您,先生,您可以为此编写代码吗?我是 JAVA 编程的新手。 :( 请如果它适合你。
      猜你喜欢
      • 2019-03-11
      • 2020-06-21
      • 1970-01-01
      • 2019-08-12
      • 2021-10-29
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多