javaGUI实现数据库增删改查

在这里插入图片描述

package com.szzq.dao;


import com.szzq.model.User;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    static String name;
    static String psw;
    static boolean flag = false;

    public void inter(User user) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/qingshukeji?serverTimezone=GMT%2B8", name, "123456");
        String sql = "insert into t_user(username,address,phone,id)values(?,?,?,?)";
        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(4, user.getId());
        preparedStatement.setString(1, user.getUsername());
        preparedStatement.setString(2, user.getAddress());
        preparedStatement.setString(3, user.getPhone());
        preparedStatement.execute();
        preparedStatement.close();
        connection.close();
    }

    static {
        JFrame frame = new JFrame("数据库连接");
        JPanel panel = new JPanel();
        JPanel panel1 = new JPanel();
        JButton button = new JButton("连接");
        JButton button1 = new JButton("添加");
        JButton button2 = new JButton("修改");
        JButton button3 = new JButton("查询");
        JButton button4 = new JButton("删除");
        JButton button5 = new JButton("断开");
        JButton button6 = new JButton("发送");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame,"数据库连接成功!");
            }
        });
        button5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame,"连接以断开!");
            }
        });


        JTextField textField = new JTextField(20);
        JTextArea textArea = new JTextArea(20, 50);
        textArea.setFont(new Font("楷体", Font.BOLD, 20));
        textArea.setBackground(Color.cyan);
        Container container = frame.getContentPane();
        container.add(textArea);
        JScrollPane jScrollPane = new JScrollPane(textArea);
        container.add(jScrollPane);

        button6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                textArea.append(textField.getText() + "\n");
            }
        });
        button4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String dialog = JOptionPane.showInputDialog(frame, "请输入需要删除数据的序号!");
                int da = Integer.parseInt(dialog);
                int i = JOptionPane.showConfirmDialog(frame, "确定删除数据吗?");
                if(i==0){
                    try {
                        deleteUserById(da);
                    } catch (ClassNotFoundException | SQLException classNotFoundException) {
                        classNotFoundException.printStackTrace();
                    }
                    JOptionPane.showMessageDialog(frame,"数据删除成功!");
                }
            }
        });

        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                W2();
            }
        });

        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                List<dan.model.User> list = null;
                try {
                    list = new UserDao().selectUserAll();
                } catch (SQLException | ClassNotFoundException throwables) {
                    throwables.printStackTrace();
                }
                int 数据 = JOptionPane.showConfirmDialog(frame, "是否显示转换后的数据");
                if (数据 == 0) {
                    for (dan.model.User user : list) {
                        textArea.append(user.toString().replace("User{", "").replace("id", "序号")
                                .replace("Username", "姓名").replace("address", "地址").replace("phone", "电话").replace("'", "")
                                .replace("'", "").replace("}", "").replace("=", ":  ") + "\n");
                    }
                }
                if (数据 == 1) {
                    for (dan.model.User user : list) {
                        textArea.append((user) + "\n");
                    }
                }
            }
        });

        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                W1();
            }
        });

        textField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    textArea.append(textField.getText() + "\n");
                    textField.setText("");
                }
            }
        });

        panel.add(button);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        panel.add(button5);
        panel1.add(textField);
        panel1.add(button6);
        frame.add(panel1, BorderLayout.NORTH);
        frame.add(panel, BorderLayout.SOUTH);

        //添加弹窗事件
        name = JOptionPane.showInputDialog(frame, "请输入数据库用户名:");
        psw = JOptionPane.showInputDialog(frame, "请输入数据库连接密码:");
        if (name.equals("root") && psw.equals("123456")) {
            JOptionPane.showMessageDialog(frame, "登录成功!");
        } else {
            JOptionPane.showMessageDialog(frame, "用户名或者密码错误");
            System.exit(0);
        }

        frame.setVisible(true);
        frame.setResizable(false);
        frame.setBounds(200, 200, 800, 500);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }

    public static void W1() {

        JFrame jFrame = new JFrame("数据添加");
        jFrame.setBounds(400, 400, 300, 400);
        JTextField textField1 = new JTextField(20);
        textField1.setText("请输入序号");
        JTextField textField2 = new JTextField(20);
        textField2.setText("请输入姓名");
        JTextField textField3 = new JTextField(20);
        textField3.setText("请输入电话");
        JTextField textField4 = new JTextField(20);
        textField4.setText("请输入住址");
        JPanel panel1 = new JPanel(new GridLayout(8, 1));
        panel1.add(textField1);
        panel1.add(textField2);
        panel1.add(textField3);
        panel1.add(textField4);
        JButton button = new JButton("添加到数据库");
        JPanel panel = new JPanel();
        panel.add(button);
        jFrame.add(panel1);


        jFrame.add(panel, BorderLayout.SOUTH);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                User user = new User();
                int i = Integer.parseInt(textField1.getText());
                user.setId(i);
                user.setUsername(textField2.getText());
                user.setPhone(textField3.getText());
                user.setAddress(textField4.getText());
                try {
                    new UserDao().inter(user);
                } catch (ClassNotFoundException | SQLException classNotFoundException) {
                    classNotFoundException.printStackTrace();
                }
                if (flag == true) {
                    JOptionPane.showMessageDialog(jFrame, "数据添加成功!");
                } else if (!flag) {
                    JOptionPane.showMessageDialog(jFrame, "数据添加失败!");
                }
                {

                }
            }
        });
        jFrame.setResizable(false);
        jFrame.setVisible(true);

    }

    public static void W2() {

        JFrame jFrame = new JFrame("数据修改");
        jFrame.setBounds(600, 200, 300, 400);
        JTextField textField1 = new JTextField(20);
        textField1.setText("请输入要修改的序号");
        JTextField textField2 = new JTextField(20);
        textField2.setText("请输入修改后的姓名");
        JTextField textField3 = new JTextField(20);
        textField3.setText("请输入修改后的电话");
        JTextField textField4 = new JTextField(20);
        textField4.setText("请输入修改后的住址");
        JPanel panel1 = new JPanel(new GridLayout(8, 1));
        panel1.add(textField1);
        panel1.add(textField2);
        panel1.add(textField3);
        panel1.add(textField4);
        JButton button = new JButton("修改并提交数据库");
        JPanel panel = new JPanel();
        panel.add(button);
        jFrame.add(panel1);


        jFrame.add(panel, BorderLayout.SOUTH);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                User user = new User();
                int i = Integer.parseInt(textField1.getText());
                user.setId(i);
                user.setUsername(textField2.getText());
                user.setPhone(textField3.getText());
                user.setAddress(textField4.getText());
                try {
                    new UserDao().updateUser(user);
                } catch (ClassNotFoundException | SQLException classNotFoundException) {
                    classNotFoundException.printStackTrace();
                }
                if (flag) {
                    JOptionPane.showMessageDialog(jFrame, "数据修改成功!");
                } else {
                    JOptionPane.showMessageDialog(jFrame, "数据修改失败!");
                }
            }
        });
        jFrame.setResizable(false);
        jFrame.setVisible(true);

    }


    //数据查询
    public List<dan.model.User> selectUserAll() throws SQLException, ClassNotFoundException {
        List<dan.model.User> list = new ArrayList<dan.model.User>();
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;//结果集合对象,用于封装数据库的查询结果
        String sql = "";

        Class.forName("com.mysql.cj.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qingshukeji?serverTimezone=GMT%2B8", name, psw);
        sql = "select * from t_user";
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();//执行数据库的查询,并返回查询结果
        while (rs.next()) {//rs.next,让光标向下移动一次并判断下一个元素是否有值,如果有值则返回真进入循环
            dan.model.User user = new dan.model.User();
            user.setId(rs.getInt("id"));//将结果集中当前元素的显示列名为id的数据获取出来并设置到user的id属性上
            user.setUsername(rs.getString("username"));
            user.setAddress(rs.getString("address"));
            user.setPhone(rs.getString("phone"));
            list.add(user);
            flag = true;
        }
        rs.close();
        ps.close();
        conn.close();
        return list;
    }

    //数据删除
    public static void deleteUserById(int id) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection coon = null;
        PreparedStatement ps = null;
        coon = DriverManager.getConnection("jdbc:mysql://localhost:3306/qingshukeji?serverTimezone=GMT%2B8", "root", "123456");
        String sql = "delete  from t_user where id=?";//定义SQL语句,?是占位符需要后期动态为?赋值
        ps = coon.prepareStatement(sql);
        ps.setInt(1, id);
        System.out.println("正在删除数据···");
        ps.execute();
        ps.close();
    }

    //数据修改
    public void updateUser(User user) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection coon = null;
        PreparedStatement ps = null;
        coon = DriverManager.getConnection("jdbc:mysql://localhost:3306/qingshukeji?serverTimezone=GMT%2B8", "root", "123456");
        String sql = "update t_user set username=?,address = ?,phone = ? where id = ?";//定义SQL语句,?是占位符需要后期动态为?赋值
        ps = coon.prepareStatement(sql);
        ps.setString(1, user.getUsername());
        ps.setString(2, user.getAddress());
        ps.setString(3, user.getPhone());
        ps.setLong(4, user.getId());
        ps.execute();
        ps.close();
        coon.close();
    }

    public static void main(String[] args){
    new UserDao();
    }
}
  • 11
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在使用Java进行数据库增删改查操作时,通常需要使用到JDBC(Java Database Connection)来连接数据库。下面是一个示例代码: 1、导入所需的库: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; ``` 2、连接数据库: ```java Connection conn = null; String url = "jdbc:mysql://localhost:3306/db_name"; // 替换为数据库的URL String user = "root"; // 替换为数据库的用户名 String password = "password"; // 替换为数据库的密码 try { conn = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } ``` 3、数据库查询操作: ```java String sql = "SELECT * FROM table_name"; // 替换为要查询的表名 try { PreparedStatement statement = conn.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { // 获取查询结果的字段值 String column1Value = resultSet.getString("column1"); // 处理查询结果 // ... } resultSet.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } ``` 4、数据库插入操作: ```java String sql = "INSERT INTO table_name (column1, column2) VALUES (?, ?)"; // 替换为要插入的表名和字段名 try { PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, "value1"); // 替换为要插入的值 statement.setString(2, "value2"); // 替换为要插入的值 statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } ``` 5、数据库更新操作: ```java String sql = "UPDATE table_name SET column1 = ? WHERE condition"; // 替换为要更新的表名和字段名 try { PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, "new_value"); // 替换为要更新的值 statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } ``` 6、数据库删除操作: ```java String sql = "DELETE FROM table_name WHERE condition"; // 替换为要删除的表名和删除条件 try { PreparedStatement statement = conn.prepareStatement(sql); statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } ``` 以上是一个简单的示例代码,实际使用时还需根据具体情况调整。在编写GUI时,可以将上述代码放置在事件处理函数中,根据用户的操作来调用不同的数据库操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七号男技师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值