JAVA或我的IDE的限制或SQL问题?

时间:2014-10-13 23:45:28

标签: java sql swing netbeans combobox

我在Java中创建了一个表单,我向数据库发送了一些详细信息,如名称,类型,事件日期,事件发生时间等。

  • 从我创建的DB类调用conn。
  • 状态变量在同一个文件中声明(作为全局变量)。

以下是'创建活动'按钮的代码:

// Creating Events
    try {
        if (txtType.getText().equals("") || txtDate.getText().equals("") || txtDescription.getText().equals("") || cmbTime.getSelectedIndex() == 0 || txtName.getText().equals("") || cmbColor.getSelectedIndex() == 0 || cmbVenue.getSelectedIndex() == 0) {
            JOptionPane.showMessageDialog(this, "All Fields Are Required To create an Event");
        } else {
            int record = conn.state.executeUpdate("insert into Events values('"+txtCustID.getText()+"','"+txtName.getText()+"','"+txtType.getText()+"','"+cmbColor.getSelectedItem().toString()+"','"+txtDescription.getText()+"','"+cmbVenue.getSelectedItem().toString()+"', '"+txtDate.getText()+"' , '"+cmbTime.getSelectedItem().toString()+"' , GETDATE() )");
            if (record > 0) {
                JOptionPane.showMessageDialog(this, "Event Registered Successfully!");
            } else {
                JOptionPane.showMessageDialog(this, "Event Not Registered!");
            }
        }
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, ex.getMessage());
    }

问题:

  1. 同样的SQL查询在朋友的最后工作正常,但却让我的列数不匹配'错误。 SQL数据库包含所有必填字段(我再次检查)。

  2. 而不是使用'选择' (作为展示位置文字)在所有组合框中我希望组合框不显示任何文字但我在Netbeans中没有看到任何选项来执行此操作。这是JAVA本身或我的IDE的限制吗?

  3. 目前,用户必须单击并从组合框中选择一个项目。我想在用户专注于它们时立即打开组合框。这是一个名为' FocusGained'的活动。这是在这里使用的正确事件吗?一旦获得焦点,我应该怎么编码才能打开组合框?

  4. SQL Database image

1 个答案:

答案 0 :(得分:2)

  1. 了解如何使用PreparedStatement,有关详细信息,请参阅Using Prepared Statements;
  2. 使用JComboBox#setSelectedItem之类的内容传递null,这会导致JComboBox最初为空。
  3. 是的,请参阅JComboBox#showPopup
  4. 至于你的第一个问题,我们无法分辨,因为我们无法访问数据库,但是你应该确保你连接的数据库是你认为的数据库。 #39;重新连接到。

    在insert语句中,您还应该指定要插入的列,而不仅仅是值,因为顺序可能会更改...例如......

    insert into Events (..., ..., ...) values (?, ?, ?)
    

    我也不鼓励您使用表单编辑器,了解如何手动编写您的用户界面,这将使您更好地了解用户界面的工作方式以及如何使用将来充分利用表单编辑器