我已经用 Java 创建了一个表单,并将一些详细信息发送到数据库,例如名称、类型、事件日期、事件时间等。
- 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());
}
问题:
相同的 SQL 查询在 friend 端运行良好,但出现“列计数不匹配”错误。 SQL 数据库具有所有必填字段(我再次检查)。
我希望组合框不显示任何文本,而不是在所有组合框中使用“选择”(作为放置文本),但我在 Netbeans 中没有看到任何选项可以执行此操作。是JAVA本身的限制还是我的IDE的限制?
目前,用户必须单击并从组合框中选择一个项目。我想在用户关注组合框时立即打开组合框。有一个名为“FocusGained”的 Activity 。在这里使用这个事件合适吗?我应该在其中编写什么代码才能在获得焦点后立即打开组合框?
最佳答案
- 了解如何使用
PreparedStatement
,请参阅 Using Prepared Statements更多细节; - 使用诸如
JComboBox#setSelectedItem
之类的东西来传递null
,这将导致JComboBox
最初为空。 - 是的,请参阅
JComboBox#showPopup
对于您的第一个问题,我们无法判断,因为我们无权访问数据库,但您应该确保您正在连接的数据库是您认为正在连接的数据库。
在插入语句中,您还应该指定要插入的列,而不仅仅是值,因为顺序可能会改变......例如......
insert into Events (..., ..., ...) values (?, ?, ?)
我也不鼓励您使用表单编辑器,学习如何手动编写 UI 代码,这将使您更好地了解 UI 的工作原理以及如何在应用程序中充分利用表单编辑器。 future
关于JAVA 或我的 IDE 的限制或 SQL 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350595/