簡體   English   中英

使用 JDBC 插入 JButton

[英]Using JDBC to insert JButton

我想知道是否可以從數據庫文件中提取數據並將其直接放在JButton中讓用戶選擇?

例如,

第一個 GUI 將讓用戶單擊JButton (食物)。

然后第二個 GUI 將提示出數據庫中的所有名稱。

有可能這樣做嗎?

我可以有一個示例代碼嗎? 一個簡單的就可以了。

嘿,在這種情況下,我解釋了如何在框架中顯示來自數據庫的員工信息。 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 組件

現在在默認構造函數中聲明 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 用於創建此應用程序。 由於我們可以選擇,因此我們可以使用任何文本編輯器(例如 Notepad、Notepad++ 等)簡單地創建此應用程序。 但是通過使用 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”,如下所示,然后單擊“完成”。

在此處輸入圖片說明

第四步

使用以下內容創建一個新的 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 步

現在您的項目已准備好運行。

右鍵單擊項目菜單並選擇“運行”。 生成以下輸出。

祝你好運

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM