JDBC连接Mysql一个类实现增删改查

news/2024/5/18 22:22:41 标签: 数据库, mysql, jdbc, java, sql

文章目录

    • 写在前面:完事开头难,先把代码跑起来把!
    • 一:准备好一个名字叫customer的数据库。(也可以自己换名字)
    • 二:创建表,这里直接运行查询或者运行sql文件都可以
    • 三:导入sql>mysql连接驱动包(可以到我的主页下载)
    • 四:测试

写在前面:完事开头难,先把代码跑起来把!

      初学JDBC的同学可以就把JDBC理解成一种可以让你的程序访问数据库的规范方式,它对应的规范接口已经被各大对应厂商实现完毕,我们只需要调用他们实现的方法就好了。然后我看到网上的代码大多数比较散,我就想着写一个简单的直接放到一个类里面,复制粘贴就可以运行看到效果的,于是就出现了本文,希望对你有帮助。

一:准备好一个名字叫customer的数据库。(也可以自己换名字)

这里就直接使用Navicat Premium工具演示了

sql_12">二:创建表,这里直接运行查询或者运行sql文件都可以

sql>mysql">SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `t_customer`;
CREATE TABLE `t_customer`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gender` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `telephone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 101 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

sql>mysql_31">三:导入sql>mysql连接驱动包(可以到我的主页下载)

驱动包下载

四:测试

这里就一个类全部包含进来,按步骤不出意外应该一次可以通过,具体的细化可以自己拓展。

java">package com.jdbc;

import java.sql.*;
import java.util.ArrayList;

public class JdbcTest {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        JdbcUtil.Customer customer = new JdbcUtil.Customer("十八岁的年轻人", "男", "13028378485", "地球");
        Insert(customer);
        //UpdateById(new JdbcUtil.Customer(100,"十八岁的年轻人", "男", "132345345345", "中国"));
        //QueryByName(customer.getName());
        //DeleteByName(customer.getName());
    }

    //插入操作
    public static void Insert(JdbcUtil.Customer customer) throws SQLException, ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;
        //1. 获得数据库连接
        conn = JdbcUtil.getConnection();
        //编写sql
        String sql = "INSERT INTO `ssm`.`t_customer`(`NAME`, `gender`, `telephone`, `address`) VALUES (?, ?, ?, ?);";
        //2.预编译sql,操作数据库,实现增删改查
        ptmt = conn.prepareStatement(sql);
        ptmt.setString(1, customer.getName());
        ptmt.setString(2, customer.getGender());
        ptmt.setString(3, customer.getTelephone());
        ptmt.setString(4, customer.getAddress());
        //3.查询得到结果集或者返回执行结果
        int re = ptmt.executeUpdate();

        System.out.println(re);
        //4.关闭连接资源
        JdbcUtil.closeAll(rs, ptmt, conn);
    }

    public static void DeleteByName(String name) throws SQLException, ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;
        //1. 获得数据库连接
        conn = JdbcUtil.getConnection();

        //编写sql
        String sql = "DELETE FROM `ssm`.`t_customer` WHERE `NAME` = ?";
        //2.预编译sql,操作数据库,实现增删改查
        ptmt = conn.prepareStatement(sql);
        ptmt.setString(1, name);
        //3.查询得到结果集或者返回执行结果
        int re = ptmt.executeUpdate();
        System.out.println(re);
        //4.关闭连接资源
        JdbcUtil.closeAll(rs, ptmt, conn);
    }


    public static void UpdateById(JdbcUtil.Customer customer) throws SQLException, ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;

        //1. 获得数据库连接
        conn = JdbcUtil.getConnection();

        //2.操作数据库,实现增删改查
        Statement stmt = conn.createStatement();
        //编写sql
        String sql = "UPDATE `ssm`.`t_customer` SET `NAME` = ?, `gender` = ?, `telephone` = ?, `address` = ? WHERE `id` = ?";
        //预编译sql
        ptmt = conn.prepareStatement(sql);
        //2.预编译sql,操作数据库,实现增删改查
        ptmt.setString(1, customer.getName());
        ptmt.setString(2, customer.getGender());
        ptmt.setString(3, customer.getTelephone());
        ptmt.setString(4, customer.getAddress());
        ptmt.setInt(5, customer.getId());
        //3.查询得到结果集或者返回执行结果
        int re = ptmt.executeUpdate();
        System.out.println(re);
        //4.关闭连接资源
        JdbcUtil.closeAll(rs, ptmt, conn);
    }

    public static void QueryByName(String custname) throws SQLException, ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;
        ArrayList<JdbcUtil.Customer> arrayList = new ArrayList<>();
        //1. 获得数据库连接
        conn = JdbcUtil.getConnection();
        //2.操作数据库,实现增删改查
        Statement stmt = conn.createStatement();

        String sql = "SELECT * FROM t_customer WHERE NAME = ?;";
        //预编译sql
        ptmt = conn.prepareStatement(sql);
        //给sql中的?占位符赋值
        ptmt.setString(1, custname);
        //3.查询得到结果集或者返回执行结果
        rs = ptmt.executeQuery();

        //4.如果有数据,rs.next()返回true
        while (rs.next()) {
            JdbcUtil.Customer customer = new JdbcUtil.Customer();
            int id = rs.getInt("id");
            String name = rs.getString("NAME");
            String gender = rs.getString("gender");
            String telephone = rs.getString("telephone");
            String address = rs.getString("address");
            customer.setId(id);
            customer.setName(name);
            customer.setGender(gender);
            customer.setTelephone(telephone);
            customer.setAddress(address);
            //将查询到的Customer添加到数组中
            arrayList.add(customer);
        }
        //循环遍历打印数组
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        //5.关闭连接资源
        JdbcUtil.closeAll(rs, ptmt, conn);
    }

    //Statement版本
    public static void Query2() throws SQLException, ClassNotFoundException {
        Connection conn = null;
        PreparedStatement ptmt = null;
        ResultSet rs = null;
        //1. 获得数据库连接
        conn = JdbcUtil.getConnection();
        //2.操作数据库,实现增删改查
        Statement stmt = conn.createStatement();
        rs = stmt.executeQuery("SELECT * FROM t_customer;");

        //3.如果有数据,rs.next()返回true
        while (rs.next()) {
            System.out.println(" 序号:" + rs.getString("id") +
                    " 姓名:" + rs.getString("NAME") +
                    " 性别:" + rs.getString("gender") +
                    " 电话:" + rs.getString("telephone") +
                    " 地址:" + rs.getString("address")
            );
        }
        //4.关闭连接资源
        JdbcUtil.closeAll(rs, ptmt, conn);
    }

}

//工具类
class JdbcUtil {
    public static final String URL = "jdbc:sql>mysql://localhost:3306/customer";
    public static final String USER = "root";//换成你自己的账号密码#########################
    public static final String PASSWORD = "123";

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        //1加载驱动程序
        Class.forName("com.sql>mysql.jdbc.Driver");
        //2获得数据库连接
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        return conn;
    }

    public static void closeAll(ResultSet rs, PreparedStatement ptmt, Connection conn) {
        close(rs);
        close(ptmt);
        close(conn);
    }

    public static void close(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {

                e.printStackTrace();
            }
        }
    }

    public static void close(PreparedStatement ptmt) {
        if (ptmt != null) {
            try {
                ptmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }

    public static void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    static class Customer {
        int id;
        String name;
        String gender;
        String telephone;
        String address;

        public Customer(int id, String name, String gender, String telephone, String address) {
            this.id = id;
            this.name = name;
            this.gender = gender;
            this.telephone = telephone;
            this.address = address;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }

        public String getTelephone() {
            return telephone;
        }

        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        @Override
        public String toString() {
            return "Customer{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", telephone='" + telephone + '\'' +
                    ", address='" + address + '\'' +
                    '}';
        }

        public Customer(String name, String gender, String telephone, String address) {
            this.id = id;
            this.name = name;
            this.gender = gender;
            this.telephone = telephone;
            this.address = address;
        }

        public Customer() {

        }
    }
}

http://www.niftyadmin.cn/n/1758215.html

相关文章

Mybatis报错Type interface com.myshop.mapper.GoodsMapper is not known to the MapperRegistry.

测试的时候碰到这个问题&#xff0c;在此记录一下 这个问题意思就是在注册的mapper里面找不到这个接口对应的mapper.xml文件&#xff0c;绑定失败&#xff0c;所以接口没问题&#xff0c;有问题的是对应的mapper.xml文件。 org.apache.ibatis.binding.BindingException: Type…

工厂模式与超级英雄的那些事儿

文章目录什么是工厂模式一&#xff1a;定义一个公共接口Avenger二&#xff1a;定义不同的英雄实现相应的接口三&#xff1a;我们需要定义一个类似工具类AvengerFactory复仇者工厂来动态生成超级英雄测试总结什么是工厂模式 ​ 简介 工厂模式&#xff08;Factory Pattern&#…

Mybatis五步完成自动生成代码——开袋即食篇

文章目录第一步&#xff1a;创建一个工具项目&#xff0c;方便日后重复使用第二步&#xff1a;操作pom.xml导入jar包操作我们的工具MakeCode项目第三步&#xff1a;编写generatorConfig.xml第四步&#xff1a;编写MakeCode.java第五步&#xff1a;生成代码可能出现的问题这里是…

Springboot整合Mybatis报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

Springboot整合Mybatis的时候报这个错&#xff0c;绑定失效&#xff0c;说明没找到mapper.xml&#xff0c;再后来在pom.xml配置一下资源路径解决问题 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.he.mapper.UserMapper.findByName…

关于使用Shiro后怎么得到用户信息

文章目录原来现在原来 ​ 原来我们使用Session时&#xff0c;是将realuser存入Session传到前台页面&#xff0c;但是在我们整合了Shiro后我们怎么通过Session拿到登陆用户的信息呢? RequestMapping("dologin")public String doLogin(HttpServletRequest requ…

Docker安装Mysql以及Mysql的基本操作——入门必看

Docker安装Mysql以及Mysql的基本操作——入门必看 文章目录Docker安装Mysql以及Mysql的基本操作——入门必看1.首先2.Docker安装Mysql3.创建用户4.数据库相关操作5.表的相关操作创建张表查询表基本查询条件查询wherelikeUNION升降序GROUPJOINIS NULL正则查询修改表更新表建立索…

vue-cli十分钟学习入门笔记――开袋即食

vue-cli十分钟学习之从一无所知到糊里糊涂 文章目录vue-cli十分钟学习之从一无所知到糊里糊涂1.为啥要学习Vue&#xff1f;2.NodeJs安装及其npm介绍3.脚手架vue-cli安装4.脚手架vue-cli的HelloWorld5.脚手架目录结构介绍1.为啥要学习Vue&#xff1f; ​ **为啥&#xff1f;&am…

Typora常见使用技巧

引用 >引用 代码框 java代码框标题 #(空格)一级标题 ##(空格)二级标题 ###(空格)三级标题 ####(空格)四级标题一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 无序序列 (空格)文字 -(空格)文字一 二 三 有序 1.(空格)文字1. 一 2. 二 3. 三表格 建议…