Java:单击按钮时的 JDBC 连接问题

Posted

技术标签:

【中文标题】Java:单击按钮时的 JDBC 连接问题【英文标题】:Java : JDBC Connection Issue When Click On Button 【发布时间】:2015-12-19 17:11:38 【问题描述】:

我在这个程序中遇到了一个问题,有两个GUI's。当用户单击按钮时,它会在连接成功时检查数据库连接,然后出现第二个GUI,其中有JComboBox。但问题是它没有在JComboBox 中显示mysql 的目录。 主要方法:

public class Main 

    public static void main(String[] args) 


        Gui obj = new Gui();



    


第一桂

public class Gui extends JFrame 

    Connector c = new Connector();

    private JButton b1;

    public Gui() 

        b1 = new JButton("Click To Connect");
        b1.addActionListener(new ActionListener() 

            @Override
            public void actionPerformed(ActionEvent arg0) 

                if (c.getConnect() == true) 
                    dispose();

                    new Gui2();
                

            

        );

        add(b1);
        setLayout(new FlowLayout());
        setSize(300, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);

    


连接类

public class Connector 

    private Connection conn;

    public boolean getConnect() 

        try 
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "john", "root");

         catch (Exception e) 
            JOptionPane.showMessageDialog(null, e.getMessage());

        

        if (conn == null) 
            System.out.println("Connection Failed");

            return false;
        

        System.out.println("Connection Success");

        return true;

    


组合框图形用户界面

public class Gui2 extends JFrame 
    private JComboBox box;

    Connection connection;

    public Gui2() 

        box = new JComboBox();

        opencatalog();

        add(box);
        setLayout(new FlowLayout());
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);

    

    private void opencatalog() 

        try 
            DatabaseMetaData meta = connection.getMetaData();

            ResultSet rs = meta.getCatalogs();

            List ct = new ArrayList();

            while (rs.next()) 

                ct.add(rs.getString(1));

            

            rs.close();
            box.setModel(new DefaultComboBoxModel(ct.toArray()));

            box.setSelectedItem(connection.getCatalog());

            box.setEnabled(ct.size() > 0);
        

        catch (Exception e) 
            System.out.println(e.toString());

        
        box.setEnabled(false);

    


【问题讨论】:

你从哪里得到Gui2的连接。 既然你总是打电话给box.setEnabled(false),那你怎么知道JComboBox里面有什么? @Satya 我从连接器类获得连接 我在Gui2课堂上提问。 @VGR 我想说连接没有连接到JComboBox 【参考方案1】:
    Connector

return 类型更改为Connectionreturn conn

public Connection getConnect() 

....
return conn

    Gui类,改变条件

     public void actionPerformed(ActionEvent arg0)  
                Connection conn= c.getConnect();  
                if (conn!=null) 
                    new Gui2(conn);//pass connection object here
                    dispose();
                
    
            
    

    Gui2类,构造函数应该是

    public Gui2(Connection conn)
    
       connection=conn;
       box = new JComboBox();
       .................
    
    

    Gui2 类,

     box.setEnabled(true);//should be enabled,
    

【讨论】:

连接=c.getConnect();给出错误,因为 getConnect() 方法 Return boolean 所以将return 类型更改为Connectionreturn conn 删除那个条件c.getConnect() 但是框架会打开我希望当按钮点击连接变为真时它会自动打开 感谢您的帮助我理解

以上是关于Java:单击按钮时的 JDBC 连接问题的主要内容,如果未能解决你的问题,请参考以下文章

通过单击按钮循环浏览 Jlabel 的图像时的 for 循环问题

单击按钮时的音频播放问题

按钮单击时的 Unity 动画返回空闲动画

在 C# 中临时更改按钮单击时的按钮颜色

更改按钮单击时的 viewController

单击按钮时的列表视图