【问题标题】:Using JDBC to insert JButton使用JDBC插入JButton
【发布时间】:2017-05-28 17:04:10
【问题描述】:

我想知道是否可以将数据库文件中的数据提取出来,直接放到JButton中让用户选择?

例如,

第一个 GUI 将让用户单击 JButton(食物)。

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

有可能吗?

我可以提供示例代码吗?一个简单的就可以了。

【问题讨论】:

  • 是的,这是可能的,但请确保您首先进行数据库调用,即从数据库中获取查询,将其作为字符串存储在某处,当您将按钮文本提供给按钮时,请设置此字符串作为您的按钮文本。这是在网络应用程序中完成的方式,希望它也适用于您。
  • @abhi 你能给我看个样本吗?

标签: java jdbc jbutton


【解决方案1】:

嘿,在这种情况下,我将解释如何在框架中显示来自数据库的员工信息。 NetBeans IDE 用于创建此应用程序。

如何在新框架中显示 Emp 信息

为了创建这个应用程序,我们需要以下文件。

Java 文件 ojdbc.jar 文件 NetBeans IDE 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.声明框架组件

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

语法

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方法并运行构造函数

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

public static void main(String arr[]) {

        new EmpSearchApp();
    }

2。 ojdbc.jar 文件

此 JAR 文件提供了一种与 Oracle 数据库建立 Java 连接的方法。由于 JDBC 连接是由 Oracle Server 供应商提供的,因此我们需要在我们的库文件夹中导入这个 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应用”。

第 3 步

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

第 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 步

现在您的项目可以运行了。

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

祝你好运

【讨论】:

    【解决方案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 包含所有食物的所有名称。

    您可以像这样实现代码,其中当您按下“食物”按钮时会调用“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
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 2012-04-15
      • 2011-07-07
      • 2015-06-20
      • 2011-05-21
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多