【发布时间】:2019-06-08 18:26:43
【问题描述】:
嗨,
我想寻求有关使用 JComboBox 将条目添加到 MySql 数据库的帮助。问题是,我的数据库中有多个表,其中大多数都存在关系。
例子:
Employee_Details 表,它有 3 个外键,来自另一个表,例如 Position、Department 和 Office_Location。现在这些外键的数据类型值为 INT,现在的问题是,如果我在组合框中选择一个给定的字符值并点击保存,它会给我一个错误,因为它显然与分配的数据类型不匹配employee_details 数据库表。
问题:
如何在组合框中选择任何给定的字符值,当我单击添加或插入按钮时,它将保存该值的 ID 而不是变量字符。
private void Position(){ // Position Combo Box
try {
String sqlPosition = "Select * From positions";
pst = con.prepareStatement(sqlPosition);
rs = pst.executeQuery();
while(rs.next()){
JCB_Position.addItem(rs.getString("Position"));
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
}
}
private boolean CheckInputs(){
if(jTextFieldFname.getText() != null || jTextFieldLname.getText() !=null || JCB_Department.getSelectedItem() != null
|| JCB_Location.getSelectedItem() != null
|| JCB_Location.getSelectedItem() != null
|| JCB_EmpStat.getSelectedItem() !=null
)
{
return true;
}
return false;
}
private void jButtonAddEmpActionPerformed(java.awt.event.ActionEvent evt) {
int InsertToDB = JOptionPane.showConfirmDialog(null, "Do you want to save this entry?", "SAVE",JOptionPane.YES_NO_OPTION);
if (InsertToDB == 0)
{
String Gender = null;
if(JRB_Male.isSelected())
{
Gender = "Male";
}
else if(JRB_Female.isSelected())
{
Gender = "Female";
}
jTextFieldFname.getText();
jTextFieldLname.getText();
jTextFieldOfficeNumber.getText();
jTextFieldMobNumber.getText();
jTextFieldEmailAdd.getText();
jTextAreaRemarks.getText();
String Position = JCB_Position.getSelectedItem().toString();
//String Dept = JCB_Department.getSelectedItem().toString();
//String Loc = JCB_Location.getSelectedItem().toString();
//String Status = JCB_EmpStat.getSelectedItem().toString();
if(CheckInputs() != false)
{
try {
pst = con.prepareStatement("INSERT INTO employee_details (First_Name, Last_Name, Gender, "
+ "Office_Number, Mobile_Number, Email_Address, Remarks)"
+ "VALUES (?,?,?,?,?,?,?)");
pst.setString(1, jTextFieldFname.getText());
pst.setString(2, jTextFieldLname.getText());
pst.setString(3, Gender);
//pst.setInt(4, Position);
//pst.setString(5, Dept);
//pst.setString(6, Loc);
//pst.setString(7, Status);
pst.setString(4, jTextFieldOfficeNumber.getText());
pst.setString(5, jTextFieldMobNumber.getText());
pst.setString(6, jTextFieldEmailAdd.getText());
pst.setString(7, jTextAreaRemarks.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Succesfully Saved");
} catch (SQLException ex) {
Logger.getLogger(Employee_Details.class.getName()).log(Level.SEVERE, null, ex);
}
}
else{
JOptionPane.showMessageDialog(null, "Check the mandatory fields");
}
}
}
【问题讨论】:
-
请显示您用值填充组合框的代码部分
-
请检查上面附上的代码,那是添加按钮的代码。注意:我没有为任何组合框分配任何动作监听器。所有代码仅在“添加”按钮中分配。
-
这是单击按钮时执行的代码,我需要查看您将可以选择的值放入组合框(JCB_Position)的代码。您还应该遵循java命名约定并为变量使用小写名称,大写(例如您的变量“Gender”)通常用于类名,如果这样使用可能会导致冲突
-
那里,我重新编辑一下。我可以处理命名和约定。我只需要知道如何克服这个问题。
标签: java mysql swing jcombobox