代码编织梦想

JDBC类:用于实现swing界面和启动线程

package unit_five;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class JDBC implements ActionListener {
    JFrame jf;
    JPanel jp1,jp2;
    JLabel l;
    JButton add,del,up,show;

    JDBC(){
        jf=new JFrame("JDBC");
        jp1=new JPanel();
        jp2=new JPanel();
        l=new JLabel("请选择功能^-^");
        jp1.add(l);
        add=new JButton("增加");
        add.addActionListener(this);
        del=new JButton("删除");
        del.addActionListener(this);
        up=new JButton("更新");
        up.addActionListener(this);
        show=new JButton("查询");
        show.addActionListener(this);
        jp2.setLayout(null);
        add.setBounds(100,10,70,40);
        add.setFont(new Font("宋体",Font.BOLD,17));
        add.setBackground(Color.orange);
        del.setBounds(100,70,70,40);
        del.setFont(new Font("宋体",Font.BOLD,17));
        del.setBackground(Color.orange);
        up.setBounds(100,130,70,40);
        up.setFont(new Font("宋体",Font.BOLD,17));
        up.setBackground(Color.orange);
        show.setBounds(100,190,70,40);
        show.setFont(new Font("宋体",Font.BOLD,17));
        show.setBackground(Color.orange);

        jp2.add(add);
        jp2.add(del);
        jp2.add(up);
        jp2.add(show);
        jf.setBounds(200,100,300,300);
        jf.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                System.exit(0);
            }
        });

        jf.setLayout(new BorderLayout());
        jp1.setBackground(Color.pink);
        jp2.setBackground(Color.pink);
        jf.add(jp1,BorderLayout.NORTH);
        jf.add(jp2,BorderLayout.CENTER);
        jf.setVisible(true);
    }


    public static void main(String[] args) {
        new JDBC();

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String s=e.getActionCommand();
        if(s.equals("增加")){
            function.add a=new function().new add();
            Thread t=new Thread(a);
            t.start();
        }else if(s.equals("删除")){
            function.del d=new function().new del();
            Thread t=new Thread(d);
            t.start();
        }else if(s.equals("更新")){
            function.change c=new function().new change();
            Thread t=new Thread(c);
            t.start();

        }else{
            function.showall showAll=new function().new showall();
            Thread t=new Thread(showAll);
            t.start();
        }
    }
}

function类:用于实现具体功能

package unit_five;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class function {
    static String url="jdbc:mysql://localhost:3306/test?useSSL=false";//test是自己在mysql数据库里面创建的数据库的名字
    static String root="root";
    static String pwd="12345";//mysql中root的密码
    static {
        try{
            Class.forName("com.mysql.jdbc.Driver");//驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    private static Connection getConn(){
        Connection con=null;
        try {
            con= DriverManager.getConnection(url,root,pwd);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
    //查询功能类
    class showall implements Runnable{
        JPanel jp=new JPanel();
        JFrame jf =new JFrame("查询");
        @Override
        public void run() {
            jf.setBounds(200,100,600,600);
            Connection con = getConn();
            try {
                PreparedStatement pst = con.prepareStatement("select * from User");
                ResultSet rs = pst.executeQuery();

                String[] columnNames = {"id", "loginName", "password", "gender", "name", "age"};// 定义表格列
                String[][] tableValues = new String[30][columnNames.length];// 定义数组,用来存储表格数据

                for (int row = 0; row < tableValues.length; row++) {
                    if (rs.next()) {
                        for (int column = 0; column < columnNames.length; column++) {
                            if (column == 0 || column == 5) {
                                tableValues[row][column] = String.valueOf(rs.getInt(column + 1));// 给表格赋值
                            } else {
                                tableValues[row][column] = rs.getString(column + 1);// 给表格赋值
                            }
                        }
                    }
                }

                JTable table = new JTable(tableValues, columnNames);
                JScrollPane sc = new JScrollPane(table);
                jp.add(sc);
                jf.add(jp);
                jf.setVisible(true);

            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    //删除功能类
    class del implements Runnable{
        JFrame jf=new JFrame("删除");
        JPanel jp=new JPanel();
        JLabel l1=new JLabel("id");
        JButton yes=new JButton("确定");
        JTextField jtf=new JTextField(10);

        @Override
        public void run() {
            jf.setBounds(100,100,500,200);
            jp.setBackground(Color.pink);
            jp.add(l1);
            jp.add(jtf);
            jp.add(yes);
            yes.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    Connection con = getConn();
                    try {
                        PreparedStatement pst = con.prepareStatement("delete from User where id=?");
                        pst.setInt(1,Integer.parseInt(jtf.getText()));
                        pst.executeUpdate();

                    } catch (SQLException e2) {
                        e2.printStackTrace();
                    }
                }
            });
            jf.add(jp);
            jf.setVisible(true);

        }
    }
    //插入功能类
    class add implements Runnable{
        JFrame jf=new JFrame("新增");
        JPanel jp=new JPanel();
        JLabel l1=new JLabel("id");
        JLabel l2=new JLabel("loginName");
        JLabel l3=new JLabel("password");
        JLabel l4=new JLabel("name");
        JLabel l5=new JLabel("gender");
        JLabel l6=new JLabel("age");
        JButton yes=new JButton("确定");
        JTextField jtf1=new JTextField(10);
        JTextField jtf2=new JTextField(15);
        JTextField jtf3=new JTextField(10);
        JTextField jtf4=new JTextField(12);
        JTextField jtf5=new JTextField(10);
        JTextField jtf6=new JTextField(10);
        @Override
        public void run() {
            jf.setBounds(100,100,500,200);
            jp.setBackground(Color.pink);
            jp.add(l1);
            jp.add(jtf1);
            jp.add(l2);
            jp.add(jtf2);
            jp.add(l3);
            jp.add(jtf3);
            jp.add(l4);
            jp.add(jtf4);
            jp.add(l5);
            jp.add(jtf5);
            jp.add(l6);
            jp.add(jtf6);
            jp.add(yes);
            yes.addActionListener(e -> {
                Connection con = getConn();
                try {
                    PreparedStatement pst = con.prepareStatement("insert into "+"User(id,loginName,password,name,gender,age)"+" values(?,?,?,?,?,?)");
                    pst.setInt(1,Integer.parseInt(jtf1.getText()));
                    pst.setString(2,jtf2.getText());
                    pst.setString(3,jtf3.getText());
                    pst.setString(4,jtf4.getText());
                    pst.setString(5,jtf5.getText());
                    pst.setInt(6,Integer.parseInt(jtf6.getText()));
                    pst.executeUpdate();

                } catch (SQLException e2) {
                    e2.printStackTrace();
                }
            });
            jf.add(jp);
            jf.setVisible(true);

        }
    }
    //更新功能类
    class change implements Runnable{
        JFrame jf=new JFrame("更新");
        JPanel jp=new JPanel();
        JLabel l1=new JLabel("password");
        JLabel l2=new JLabel("age");
        JLabel l3=new JLabel("gender");
        JLabel l4=new JLabel("name");
        JLabel l5=new JLabel("id");
        JButton yes=new JButton("确定");
        JTextField jtf1=new JTextField(15);
        JTextField jtf2=new JTextField(15);
        JTextField jtf3=new JTextField(10);
        JTextField jtf4=new JTextField(12);
        JTextField jtf5=new JTextField(10);
        @Override
        public void run() {
            jf.setBounds(100,100,500,200);
            jp.setBackground(Color.pink);
            jp.add(l1);
            jp.add(jtf1);
            jp.add(l2);
            jp.add(jtf2);
            jp.add(l3);
            jp.add(jtf3);
            jp.add(l4);
            jp.add(jtf4);
            jp.add(l5);
            jp.add(jtf5);
            jp.add(yes);
            yes.addActionListener(e -> {
                Connection con = getConn();
                try {
                    PreparedStatement pst = con.prepareStatement("update user set"+" password=?,age=?,gender=?,name=? where id=?");
                    pst.setString(1,jtf1.getText());
                    pst.setInt(2,Integer.parseInt(jtf2.getText()));
                    pst.setString(3,jtf3.getText());
                    pst.setString(4,jtf4.getText());
                    pst.setInt(5,Integer.parseInt(jtf5.getText()));
                    pst.executeUpdate();

                } catch (SQLException e2) {
                    e2.printStackTrace();
                }
            });
            jf.add(jp);
            jf.setVisible(true);

        }
    }

}

最终效果(赶时间随便写的一个,界面可能不太美观):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/BestZT/article/details/111106914

2020-12-13-爱代码爱编程

spring第三天学习笔记整理 文章目录 spring第三天学习笔记整理一、AOP概念及相关术语1.概念2.相关术语二、AOP增强对象示例1.实现思路2.示例三、切入点和通知1.切入点表达式的书写方式2.切入点表达式的抽取3.通知类型4.通知方法的参数5.环绕通知四、通知中获取切入点方法的参数,返回值及异常信息1.准备工作2.基于代码实现获取参数

Java实现七种【排序算法】+图解+完整代码+分析-爱代码爱编程

参考书目:《大话数据结构》 本文涉及的排序算法 一、冒泡排序(优化版)二、简单选择排序三、直接插入排序四、希尔排序五、堆排序六、归并排序(递归版)+归并排序(递归优化版)七、快速排序+快速排序(四度优化版)End.总结 一、冒泡排序(优化版) 0.基本思想:一种交换排序,两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录位置。

MyBatis:事务管理形式讲解以及Mysql的innodb和MyISAM引擎的区别以及事务控制源码案例(11)-爱代码爱编程

使用JDBC的事务管理 手动使用 java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close()) 使用MANAGED的事务管理 MyBatis自身不会去实现事务管理,而让程序的容器如(Spring, JBOSS)来实现对事务的管理 事务工厂TransactionFactor

记录Spring框架第一天(spring框架的概述以及spring中基于XML的IOC配置)-爱代码爱编程

spring 是什么 : spring 的优势 : spring 的体系结构: IOC:控制反转-Inversion Of Control : 解耦: (所以,削减了程序间的耦合,降低了程序中的依赖关系,使编译时遇到的错误变为运行时异常。) 使用 spring的 IOC解决程序耦合 一.使用xml文件配置 获取容器,创建对象: 核

可能是最卷的Spring源码系列(一):Spring源码环境搭建(idea)-爱代码爱编程

本文是spring源码系列第一篇,计划通过10篇左右文章分析spring主要流程 工欲善其事,必先利其器。同样,学习Spring源码,就必须先把Spring的源码环境搭建起来 0 下载spring的源码 github中搜索spring-framework项目,直接git clone或者下载压缩包 1 编译源码 根据spring项目的md中编译指南

Laravel5.6 模块化公众号与小程序系统项目实战-爱代码爱编程

1 Laravel最佳开发环境介绍.mp4 2 安装Laravel并配置Homestead.mp4 3 配置虚拟域名访问Laravel项目.mp4 4 Laravel与数据库管理工具连接Mysql.mp4 5 Laravel高可用模块化思想.mp4 6 使用组件快速构建模块设计架构.mp4 7 配置Phpstorm与快速创建登录注册功能.mp4 8 默认

mysql可能用到的一些dos命令-爱代码爱编程

1.如何登陆呢? dos命令窗口输入 mysql -uroot -p333 2.查看有哪些数据库? show databases; 3.创建属于我们自己的数据库 create database name; 4.使用某个数据库 use database_name; 5.查看当前数据库有哪些表 show tables; 6.初始化数据 sourse

MySQL数据库的概念和安装-爱代码爱编程

1.数据库的介绍 1.1数据的存储方式 Java 中创建对象: Student s = new Student(1, "张三") 存在内存中  学习了 Java IO 流:把数据保存到文件中  1.2什么是数据库 1) 存储数据的仓库; 2) 本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的; 3) 所有的关系型数据库都可以使用

MyBatis:事务管理形式讲解以及Mysql的innodb和MyISAM引擎的区别以及事务控制源码案例(11)-爱代码爱编程

使用JDBC的事务管理 手动使用 java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close()) 使用MANAGED的事务管理 MyBatis自身不会去实现事务管理,而让程序的容器如(Spring, JBOSS)来实现对事务的管理 事务工厂TransactionFactor

windows安装mysql-5.7.24-winx64解压缩版-爱代码爱编程

1.首先,你要下载MySQL解压版,下载地址:https://www.mysql.com/downloads/ 2.解压 3.配置环境变量    新增系统环境变量:    键名:MYSQL_HOME    值为:D:\mysql-5.7.24-winx64 4.在Path中添加:%MYSQL_HOME%\bin,注意Path中不同值之间的“;”

面试官:聊聊MySQL的慢查询、如何监控、如何排查?-爱代码爱编程

Hi,大家好!我是白日梦。 今天我要跟你分享的话题是:“聊聊什么是慢查、如何监控?如何排查?” 一、 推荐阅读方式 点击查看原文 使用推荐阅读,有更好的阅读体验 二、什么是慢查? 慢查,顾名思义就是很慢的查询。SQL的执行总是有一个执行时间的,通过long_query_time参数告诉MySQL,当SQL的执行时间超过该参数的指定值后就将这条S

【SQL】进阶学习与题目补充-爱代码爱编程

【SQL】进阶学习与题目练习 1. 学习框架2. leetcode日常练习Q1 [1097. 游戏玩法分析 V](https://leetcode-cn.com/problems/game-play-analysis-v/)Q1.1 题目:Q1.2 代码:Q1.3 注意:Q2 [571. 给定数字的频率查询中位数](https://leetcode