当前位置: 首页 > 知识库问答 >
问题:

选择Query并将出现在Netbeans和mysql中的组合框中

秦时铭
2023-03-14

我在此代码上遇到问题:
String charitysql=“select wardName,charityRoomID FROM tbl_charityward,tbl_charityroom2
where tbl_charityward.charitywardid=tbl_charityroom2.charitywardid”;

 try { 

        pst = conn.prepareStatement(charitysql);
        rs = pst.executeQuery();

            while (rs.next()) {
                String wardname = rs.getString("wardName");
                cb_ward2.addItem(wardname);
                String roomid = rs.getString("charityRoomID");
                cb_room2.addItem(roomid);                    

            }

        }
        catch(Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }

这是我的表结构:
tbl_charityward
charityWardID int NOT NULL AUTO_INCREMENT,
wardName varchar(20)、
status varchar(20)、
PRIMARY KEY(charityWardID)

tbl_charityroom2
charityRoomID INT NOT NULL AUTO_INCREMENT,
状态varchar(20),
charityWardID INT,
主键(charityRoomID,charityWardID),
外键(charityWardID)引用tbl_charityward(charityWardID)

这是我的表,其值为:
tbl_charityward
+----------+--------+-------+
charityWardID wardName status
+------------+------+
1......外科手术..打开..
......2.......Obygine..打开..
......3......儿科..开..
+----------+--------+--------+

tbl_charityroom2
+----------+--------+
charityRoomID status charitywardid
+-----------+--------+
.....1......Open...1......1......
.....2......Open...1......
.....3......Open...2......
+

我有2个组合框:
cb_ward2=其中包含wardname
cb_room2=其中包含charityroomid

如果从cb_ward2中选择一个wardName,则cb_room2将显示相应的charityroomid。

示例:
我选择surgical并且charityroomid=1,2将出现在CB_ROOM2上,
并且当我选择obygine时,charityroomid=3将只出现在CB_ROOM2上,
但是当我选择peditatrial时,CB_ROOM2
上不会出现charityroomid

我正在使用Netbeans和MYSQL

编辑:

import java.sql.*;<br>
import javax.swing.*;<br>
public class addBed extends javax.swing.JFrame {

    Connection conn = null;
    ResultSet rs = null;
    PreparedStatement pst = null;

    /**
     * Creates new form addBed
     */
    public addBed() {
        initComponents();
    }

    void loadcombo() {


            try {


            String charitysql = "SELECT wardName, charityRoomID FROM tbl_charityward, tbl_charityroom2 WHERE tbl_charityward.charityWardID = ?";  
            pst = conn.prepareStatement(charitysql);
            pst.setInt(1,tbl_charityroom2.charityWardID);
            rs = pst.executeQuery();

                while (rs.next()) {

                    cb_ward2.addItem(rs.getString(1));

                    cb_room2.addItem(rs.getString(2));                    

                }

            }
            catch(Exception e) {
                JOptionPane.showMessageDialog(null, e);
            }




    }
    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
       conn = myconn.ConnectDb();
       loadcombo();
    }                                 

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

    }     

共有3个答案

江天宇
2023-03-14

尝试使用arrayList!!它会给你一种像推动一样的效果

类似这样的东西

    ArrayList<String> categories = new ArrayList<>();
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        System.out.println("\ntrying connection");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/products?user=root&password=");
        stmt = conn.createStatement();
        rs = stmt.executeQuery("SELECT DISTINCT categorie FROM product");
        while (rs.next()) {
            categories.add(rs.getString(1));
        }
        for (String item : categories) {
            ComboBoxCategorie.addItem(item);
        }

    } catch (SQLException ex) {
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    } finally {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException sqlEx) {
            } // ignore
            stmt = null;
        }
    }

您可以忽略catch和finally子句!!关闭stmt即可

陶鹏
2023-03-14

由于您的基本需求是将数据显示在两个组合框中,您可以这样做:

可以使用LoadCombo()加载带有数据库值的CB_WARD2组合框。

void loadcombo() {
    try
    {
     Connection conn=null;
 PreparedStatement pst=null;
 ResultSet rs=null;
// Your database connections 

     String charitysql = "SELECT wardName FROM tbl_charityward";
     pst = conn.prepareStatement(charitysql);
     rs = pst.executeQuery();
    while(rs.next()){                            
        cb_ward2.addItem(rs.getString(1));
    }
    con.close();
    }
    catch(Exception e)
    {
        System.out.println("Error"+e);
    }    
}

现在可以在CB_Ward2上使用ActionListener作为:

cb_ward2.addActionListener(new ActionListener(){


    public void actionPerformed(ActionEvent ae){
        try
    {
        Connection con=null;
        PreparedStatement pst=null,pst1=null;
        ResultSet rs=null,rs1=null;
    //your database connection
                Object name=cb_ward2.getSelectedItem();
                    pst=con.preparedStatement("select charityWardID from tbl_charityward where wardName=?");
                pst.setObject(1,name);
                    rs= pst.executeQuery();
        if(rs.next())
        {
                      pst1=con.preparedStatement("select charityRoomID from tbl_charityroom2 where charityWardID=?");
                      pst1.setInt(1,rs.getInt(1));
                      rs1=pst1.executeQuery();
                      while(rs1.next()){
                      cb_room2.addItem(rs1.getInt(1));
                      }
            }
                con.close();
    }
    catch(Exception e)
    {
        System.out.println("GG"+e);
    }

    }


    });
鲁望
2023-03-14

您正在使用的方式不是PreparedStatement的正确使用方式

这样做

String charitysql = "SELECT wardName, charityRoomID FROM tbl_charityward,tbl_charityroom2 
WHERE tbl_charityward.charityWardID = ?";
pst = conn.prepareStatement(charitysql);
pst.setInt(1,tbl_charityroom2.charityWardID);
rs = pst.executeQuery();
 类似资料:
  • 所以,我有一个奇怪的问题,我从组合框列表中选择一个项目,为了填充第二个组合框,我必须首先从第一个组合框中再次选择单词,而不是从项目列表中,而是单词本身。只有这样,代码才会注册我选择了该项目。我拥有的代码是简单的$variable.SelectedItem。参见下面的代码; 我想做的就是从下拉列表中选择位置“医院”,然后第二个名为“$ComboBox_Printer”的组合框填充我服务器中的打印机名

  • 问题内容: 我有一个看起来像这样的mysql表: 我需要一个查询来选择具有不同的第2列和第3列的所有行,例如,我希望此示例的输出如下所示: 我已经找到了一些有关如何执行此操作的示例,但它们在每一列上的选择都是不同的。 问题答案: 假设第一列是唯一的,则可以执行以下操作: 看到它在线运行:sqlfiddle

  • 我已经实现了,这样我的船舶列表就会根据国家和船舶类型进行更改,但问题是我无法选择任何船舶。 你知道我哪里出了问题吗? 上面是Controller类中的。 上面是视图类中的setter。

  • 问题内容: 是否可以在一列中选择2列并合并它们? 例子: 问题答案: 是的,就像您所做的那样: 如果查询数据库,您将得到正确的答案。 发生的事情是您要求表达。一个非常简单的表达式只是一个列名,一个更复杂的表达式中可以包含公式等。

  • 问题内容: 我试图在单独的mixin文件中包含常规样式/技巧,可以在需要时将其应用于任何项目。其中一些样式需要多个元素才能协同工作。 例如: 实际上,mixin可以工作,但是生成的css可以将mixin与主代码分开,即使它们的选择器相同。当我开始添加更多此类文件时,它的缺点是丑陋的CSS和较大的文件大小。 无论如何,我可以做到这一点,以便可以合并相同的选择器吗?像这样: 问题答案: 不能。Sass

  • 我有一个列表类型的组合框。我通过datacontext绑定了ItemsSource和ItemSelected。如果所选项目已经更改,我会显示一条弹出消息,确认用户的操作。单击“确定”后,选择会发生变化。但是在点击“取消”时,选择应该被取消,而先前的项目应该被保留。下面是绑定到combobox的SelectedItem的属性。 组合框在弹出窗口中。那么Dispatcher对象在这种情况下能工作吗?