有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JDBC插入JButton

我想知道是否可以从数据库文件中提取数据并直接将其放入JButton中,让用户选择

比如说,

第一个GUI将允许用户单击JButton(食物)

然后,第二个GUI将提示数据库中的所有名称

有可能吗

能给我一个示例代码吗?只要一个简单的就行了


共 (2) 个答案

  1. # 1 楼答案

    在本例中,我将解释如何在一个框架中显示数据库中的员工信息。NetBeans IDE用于创建此应用程序

    如何在新帧中显示Emp信息

    要创建此应用程序,我们需要以下文件

    Java文件 ojdbc。jar文件 成开发环境 SQL表

    1。Java文件

    这个Java包含编程代码。在该文件中,我们使用Swing组件在选择员工姓名后的新框架中显示emp数据

    我们能做什么

    A.导入多个包

    首先,我们需要导入以下软件包:

    javax.swing.*;
    java.awt.*;
    java.awt.event.*;
    java.sql.*;
    java.util.Vector;
    

    回转组件使用回转组件。所有swing组件都在此包中定义。AWT包提供了事件处理机制,换句话说,它处理诸如“按钮点击”之类的事件。SQL包创建JDBC连接

    B.扩展JFrame组件并实现ActionListener

    扩展JFrame组件并实现ActionListener,如下所示:

    EmpSearchApp扩展JFrame实现ActionListener

    C.声明组件

    现在声明以下组件:

    JLabel l, l1, l2, l3, l4,l5;
    
    JButton b;
    
    JTextField tf1, tf2, tf3, tf4;
    
    JComboBox bx;
    String str;
    

    D.声明框架组件

    现在在默认构造函数中声明框架组件,如下所示:

    语法

    EmpSearchApp()
    {
    ......
    ......
    try{
    //JDBC CODE
    }Catch(Exception ex)
    {
    System.out.println(ex)
    }
    ......
    }
    

    注:在虚线部分,我们声明并添加了Swing的各个组件;在这一部分中JDBC代码还用于从数据库表中获取可在JComboBox中使用的Emp名称。下面我将向您展示完整的代码;我只为你总结一下我能做些什么

    D.添加一个ActionListener

    为按钮单击事件添加ActionListener,如下所示:

    public void actionPerformed(ActionEvent e) {
    
                       showData();
                }
    

    注意:如果我们有多个按钮,那么我们可以使用“if (e.getSource() == buttonName)”。但是在这个应用程序中,我只能使用一个按钮“Submit”,所以不需要使用“e.getSource”。我使用了一个方法“showData()”。在这种方法中,我编写了新的帧代码

    E.创建一个新框架

    Create a new Frame in the showData() method as in the following:
    public void showData() {
    .........
    try{
    //JDBC CODE
    }Catch(Exception ex)
    {
    System.out.println(ex)
    }
    .........
    }
    

    F.创建主方法并运行构造函数

    最后,创建一个main方法并运行构造函数,如下所示:

    public static void main(String arr[]) {
    
            new EmpSearchApp();
        }
    

    2。ojdbc。jar文件

    这个JAR文件提供了一种与Oracle数据库建立Java连接的方法。因为JDBC连接是由Oracle服务器供应商提供的,所以我们需要将这个JAR文件导入到我们的库文件夹中

    3。NetBeans IDE

    此IDE用于创建此应用程序。既然我们有选择,我们可以简单地用任何文本编辑器创建这个应用程序,比如记事本、记事本++,等等。但通过使用NetBeans,我们可以直接创建框架并添加“按钮”、“标签”等组件,而无需编写代码。我在上一篇文章“Netbeans IDE的优点”中解释了IDE的优点,通过这篇文章,您可以看到不同之处

    4。emp。sql表

    为了获取记录,我们需要一个数据库表;为此,我们在“freeman”数据库中创建了一个“emp”表

    语法

    emp。sql

    create table emp
     (
        uname varchar2(20), umail varchar2(30),
        upass varchar2(20), ucountry varchar2(20)
     );
    

    在其中插入一些行,如下所示:

    1. insert into emp values ('freeman', 'test@tt.com', 'welcome', 'Iran');
    
    2. insert into emp values ('sam', 'sam@ss.com' , '555', 'USA');
    

    现在,让我们开始创建此应用程序。使用以下过程在NetBeans IDE中执行此操作

    步骤1

    打开NetBeans IDE

    步骤2

    选择“Java”->;“Java应用程序”如下所示

    enter image description here

    步骤3

    为您的项目名称提供“EmpSearchApp”,如下所示,然后单击“完成”

    enter image description here

    步骤4

    使用以下内容创建一个新的Java类“EmpSearchApp”

    EmpSearchApp.java
    
    import javax.swing.*;
    
    import java.awt.*;
    
    import java.awt.event.*;
    
    import java.sql.*;
    
    import java.util.Vector;
    
    
    
    public class EmpSearchApp extends JFrame implements ActionListener {
    
    
    
        JLabel l, l1, l2, l3, l4, l5;
    
        JButton b;
    
        JTextField tf1, tf2, tf3, tf4;
    
        JComboBox bx;
    
        String str;
    
    
    
        EmpSearchApp() {
    
            setVisible(true);
    
            setSize(700, 700);
    
            setLayout(null);
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            setTitle("JDBC DEMO");
    
    
    
            l = new JLabel("Select Name:");
    
            b = new JButton("Submit");
    
    
    
            tf1 = new JTextField();
    
            tf2 = new JTextField();
    
            tf3 = new JTextField();
    
            tf4 = new JTextField();
    
    
    
            l.setBounds(20, 20, 200, 20);
    
            b.setBounds(50, 50, 150, 30);
    
    
    
            add(l);
    
            add(b);
    
    
    
            tf1.setEditable(false);
    
            tf2.setEditable(false);
    
            tf3.setEditable(false);
    
            tf4.setEditable(false);
    
            b.addActionListener(this);
    
    
    
            try {
    
                Class.forName("oracle.jdbc.driver.OracleDriver");
    
                Connection con = DriverManager.getConnection("jdbc:oracle:thin:@mcndesktop07:1521:xe", "freeman", "welcome");
    
                PreparedStatement ps = con.prepareStatement("select uname from emp");
    
                ResultSet rs = ps.executeQuery();
    
                Vector v = new Vector();
    
                while (rs.next()) {
    
                    String s = rs.getString(1);
    
    
    
                    v.add(s);
    
                }
    
                bx = new JComboBox(v);
    
                bx.setBounds(240, 20, 200, 20);
    
                add(bx);
    
    
    
            } catch (Exception ex) {
    
                System.out.println(ex);
    
            }
    
    
    
        }
    
    
    
        public void actionPerformed(ActionEvent e) {
    
            showData();
    
        }
    
    
    
        public void showData() {
    
            JFrame f1 = new JFrame();
    
            f1.setVisible(true);
    
            f1.setSize(500, 500);
    
            f1.setLayout(null);
    
            f1.setTitle("JDBC DEMO");
    
    
    
            l5 = new JLabel("Displaying Emp Data:");       
    
            l5.setForeground(Color.red);
    
            l5.setFont(new Font("Serif", Font.BOLD, 20));
    
            l1 = new JLabel("Emp Name:");
    
            l2 = new JLabel("Emp Email:");
    
            l3 = new JLabel("Emp pass:");
    
            l4 = new JLabel("Emp Country:");
    
    
    
            l5.setBounds(100, 50, 300, 30);
    
            l1.setBounds(20, 110, 200, 20);
    
            l2.setBounds(20, 140, 200, 20);
    
            l3.setBounds(20, 170, 200, 20);
    
            l4.setBounds(20, 200, 200, 20);
    
    
    
            tf1.setBounds(240, 110, 200, 20);
    
            tf2.setBounds(240, 140, 200, 20);
    
            tf3.setBounds(240, 170, 200, 20);
    
            tf4.setBounds(240, 200, 200, 20);
    
    
    
            f1.add(l5);
    
            f1.add(l1);
    
            f1.add(tf1);
    
            f1.add(l2);
    
            f1.add(tf2);
    
            f1.add(l3);
    
            f1.add(tf3);
    
            f1.add(l4);
    
            f1.add(tf4);
    
    
    
            str = (String) bx.getSelectedItem();
    
            try {
    
                Class.forName("oracle.jdbc.driver.OracleDriver");
    
                Connection con = DriverManager.getConnection("jdbc:oracle:thin:@mcndesktop07:1521:xe", "freeman", "welcome");
    
                PreparedStatement ps = con.prepareStatement("select * from emp where uname=?");
    
                ps.setString(1, str);
    
                ResultSet rs = ps.executeQuery();
    
                while (rs.next()) {
    
    
    
                    tf1.setText(rs.getString(1));
    
                    tf2.setText(rs.getString(2));
    
                    tf3.setText(rs.getString(3));
    
                    tf4.setText(rs.getString(4));
    
    
    
                }
    
            } catch (Exception ex) {
    
                System.out.println(ex);
    
            }
    
        }
    
    
    
        public static void main(String arr[]) {
    
            new EmpSearchApp();
    
        }
    }
    

    步骤5

    现在,您的项目已准备好运行

    右键单击pr项目菜单并选择“运行”。生成以下输出

    祝你好运

  2. # 2 楼答案

    List<String> foodNames = new ArrayList<>();
    ResultSet rs = this.connection.createStatement().executeQuery("SELECT Name FROM Food");
    while (rs.next())
    {
        foodNames.add(rs.getString(1));
    }
    

    现在你有了一个列表foodNames,上面有所有食物的所有名字

    您可以像这样实现代码,当您按下按钮“Food”时调用方法“btnFoodActionPerformed(ActionEvent)”

    private void btnFoodActionPerformed(java.awt.event.ActionEvent evt)
    {
        List<String> foodNames = new ArrayList<>();
        ResultSet rs = this.connection.createStatement().executeQuery("SELECT Name FROM Food");
        while (rs.next())
        {
            foodNames.add(rs.getString(1));
        }
    //do some stuff with the list
    }