java - 如何将 Java 类连接到 GUI?

标签 java mysql database user-interface windowbuilder

我正在设计一个可以通过 GUI 访问的数据库,我有三个类 Main、Database 和 GUI,当我运行 main 时出现错误并且 GUI 关闭,然后是一条我无法阅读的简短错误消息,不确定这是哪里出了问题,因为我认为这可能是很多问题。感谢您的帮助:)

这是我的主课

public class MainApplication {

@SuppressWarnings("unused")
public static void main(String[] args) {

    VideoStoreGUI window = new VideoStoreGUI();
} 

我的数据库类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import javax.swing.JOptionPane;
@SuppressWarnings("unused")
public class DataBase {

static Connection con = null;
static Statement stmt = null;
static ResultSet rs = null;
static Scanner in = new Scanner(System.in);



public void close_connection() {
    try
    {
        con.close();
        System.out.println("Database Connections Succesully Closed.");
    } 
    catch (SQLException sqle)
    {
        System.out.println("Error: failed to close the database");
    }
}

public static void addMember(int member_id, String name, String address) // Adding a Member to the Database.
{
    try {
        String str = "INSERT INTO members (member_id, name, address) values(" + member_id + ", '" + name + "', '"
                + address + "');";
        int rows = stmt.executeUpdate(str);

        System.out.println("Success in adding member");

    } catch (SQLException sqle) {
        JOptionPane.showMessageDialog(null, "Error: Could not add member");
    }
}


public static void initialize_database() {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/videostore";
        con = DriverManager.getConnection(url, "root", "admin");
        stmt = con.createStatement();
    } catch (Exception e) {
        System.out.println("Error: Failed to connect to database\n" + e.getMessage());
    }
}

public DataBase()
{
    initialize_database();      
}

和我的 GUI 类:

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JMenuBar;

public class VideoStoreGUI extends JFrame {
private JFrame frame;

DataBase my_database;
private JPanel contentPane;
private JTextField textMemberID;
private JTextField textMemberName;
private JTextField textMemberAddress;

/**
 * Create the frame.
 */
public VideoStoreGUI() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 400);

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setBounds(10, 31, 232, 240);
    contentPane.add(tabbedPane);

    JPanel panel = new JPanel();
    tabbedPane.addTab("Members", null, panel, null);
    panel.setLayout(null);

    JLabel labelMemberID = new JLabel("Members ID");
    labelMemberID.setBounds(10, 11, 85, 14);
    panel.add(labelMemberID);

    JLabel labelMemberName = new JLabel("Members Name");
    labelMemberName.setBounds(10, 36, 85, 14);
    panel.add(labelMemberName);

    JLabel labelMemberAddress = new JLabel("Members Address");
    labelMemberAddress.setBounds(10, 61, 85, 14);
    panel.add(labelMemberAddress);

    textMemberID = new JTextField();
    textMemberID.setBounds(131, 8, 86, 20);
    panel.add(textMemberID);
    textMemberID.setColumns(10);

    textMemberName = new JTextField();
    textMemberName.setColumns(10);
    textMemberName.setBounds(131, 33, 86, 20);
    panel.add(textMemberName);

    textMemberAddress = new JTextField();
    textMemberAddress.setColumns(10);
    textMemberAddress.setBounds(131, 58, 86, 20);
    panel.add(textMemberAddress);

    JButton buttonAddMember = new JButton("Add Member");
    buttonAddMember.setBounds(10, 86, 102, 23);
    panel.add(buttonAddMember);

    JButton buttonRemoveMember = new JButton("Add Member");
    buttonRemoveMember.setBounds(115, 86, 102, 23);
    panel.add(buttonRemoveMember);

    JButton buttonSearchMember = new JButton("Add Member");
    buttonSearchMember.setBounds(66, 120, 102, 23);
    panel.add(buttonSearchMember);

    JPanel panel_1 = new JPanel();
    tabbedPane.addTab("Products", null, panel_1, null);
}

最佳答案

我只看到一个可以弹出的地方。如果你愿意,你可以保留它,但添加系统输出并确定你的消息:

catch (SQLException sqle) {
        System.out.writeln("Exception:"+sqle);
        JOptionPane.showMessageDialog(null, "Error: Could not add member");
    }

根据此消息的位置,我认为您的 sql 或数据库有误。我建议您也打印您的 sql 及其结果。

关于java - 如何将 Java 类连接到 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529282/

相关文章:

Android SQLite rawQuery 带来麻烦

database - 结合两个一对一表的数据库设计

java - 哪个是最好的媒体容器?

java - XML:直接获取 XML 元素

java - UtteranceProgressListener (TTS) 不起作用或未被调用 (Android 4.4.2)

java - 如何从java捕获错误并打印c程序触发器的流

mysql - 从 MYSQL 中的两列中选择不同的数据

mysql - 使用 select 语句更新动态列值

mysql - 使用 Eloquent whereNotIn 时查询非常慢

mysql - 如何优化以下 SQL 查询?