zoukankan      html  css  js  c++  java
  • JDBC基本使用

    一、准备环境

    开发工具:IDEA
    jdk版本: 8+ (jdk13)
    数据库:MySQL 5+ (mysql 8)
    所需JAR包:数据库驱动jar包(mysql-connector-java-5.1.49.jar)


    1. 在IDEA中创建一个空项目(或者模块)

      • 以创建空项目为例,以此点击:
        File ——> New ——> Project ——> 选择左角的Empty Project ——> 在右上选择SDK ——> 点击NEXT ——> 给项目命名,如:JDBC ——> FINISH
    2. 在项目中创建一个JAVA模块

      File ——> New ——> Module ——> 选择左角的Java ——> 在右上选择SDK ——> 点击NEXT ——> 给模块命名,如:BaseOption ——> FINISH
      此时模块的结构为:

    BaseOption
          |__ BaseOption.iml
          |__ src
    

    二、JDBC入门

    2.1创建lib目录

    在**BaseOption**下创建**lib**文件夹
    

    2.2导入JAR包

    - 将JAR包(mysql-connector-java-5.1.49.jar)复制到**lib**目录下
    
    - 右键jar包——>**Add as library**——>**OK**
    

    2.3编写JDBC工具类

    1. 在src下创建相应的包(如,cn.langkye.utils)

    2. 在utils下新建类(JDBCUtil)

    3. 编写获取数据库连接和释放资源的代码

    package com.langkye.utils;
    
    import org.junit.Test;
    
    import java.sql.*;
    
    /**
     * @Author: langkye
     * @Date: 2020/6/22
     * @version: 1.0
     * @Lisence: Created with IntelliJ IDEA.
     * @Description: JDBCUtil
     */
    public class JDBCUtil {
        // 连接的数据库地址,数据库名,参数
        private static String url = "jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        // 数据库用户名
        private static String username = "root";
        // 当前用户密码
        private static String password = "langkye";
        // mysql驱动位置
        private static String driver = "com.mysql.jdbc.Driver";
    
        // 加载并数据库驱动
        static {
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取数据库连接
         * @return conn 数据库连接对象
         */
        public static Connection getConnection(){
            Connection conn = null;
            try {
                conn = DriverManager.getConnection(url,username,password);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            return conn;
        }
    
        /**
         * 释放资源
         * @param rs 查询结果集
         * @param stmt sql执行对象
         * @param conn 数据库连接对象
         */
        public static void close(ResultSet rs,Statement stmt,Connection conn){
            /* 按照从小到大释放资源 */
            // 释放结果集
            if (rs!=null) {
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            // 释放sql执行对象
            if (stmt!=null) {
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            // 释放数据库连接对象
            if (conn!=null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        // 释放资源
        public static void close(Statement stmt,Connection conn){
            close(null,stmt,conn);
        }
        // 释放资源
        public static void close(Connection conn){
            close(null,conn);
        }
    
        // 测试数据库连接
        @Test
        public void TestJDBC(){
            Connection conn = JDBCUtil.getConnection();
            if (conn!=null){
                System.out.println("数据库连接成功:" + conn);
                close(conn);
            }
        }
    }
    

    2.4使用JDBC操作数据库

    package com.langkye.dao;
    import com.langkye.utils.JDBCUtil;
    import org.junit.Test;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class UserDao {
    
        /**
         * 1. 修改"LinQinXia"用户的年龄为28
         */
        @Test
        public void test1(){
            // 声明
            Connection conn = null;
            PreparedStatement pstmt = null;
            // 1. 获取connection
            conn = JDBCUtil.getConnection();
            //2. 定义sql
            String sql = "update user set age = ? where username = ?";
            //3. 执行sql
            try {
                // 预编译sql,防止SQL注入
                pstmt = conn.prepareStatement(sql);
                // 设置参数
                pstmt.setInt(1,28);
                pstmt.setString(2,"LinQinXia");
                // 执行sql,返回影响行数
                int count = pstmt.executeUpdate();
                System.out.println(count);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally {
                // 释放资源
                JDBCUtil.close(pstmt,conn);
            }
        }
    
        /**
         * 2. 添加一条记录
         */
        @Test
        public void test2(){
            // 声明
            Connection conn = null;
            PreparedStatement pstmt = null;
            // 1. 获取connection
            conn = JDBCUtil.getConnection();
            // 2. 定义sql
            String sql = "insert into user(username,password,name,age ,birthday,address) values(?,?,?,?,?,?)";
            // 执行sql
            try {
                // 预编译sql
                pstmt = conn.prepareStatement(sql);
                // 设置参数
                pstmt.setString(1,"Tom");
                pstmt.setString(2,"Tom123");
                pstmt.setString(3,"Tom");
                pstmt.setInt(4,22);
                pstmt.setString(5,"2000-02-01");
                pstmt.setString(6,"China");
                // 执行sql,返回影响行数
                int count = pstmt.executeUpdate();
                System.out.println(count);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally {
                // 释放资源
                JDBCUtil.close(pstmt,conn);
            }
        }
    
        /**
         * 3.查询
         */
        @Test
        public void test3(){
            // 声明
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            // 1. 获取connection
            conn = JDBCUtil.getConnection();
            // 2. 定义sql
            String sql = "select * from user";
            // 执行sql
            try {
                pstmt = conn.prepareStatement(sql);
                rs = pstmt.executeQuery();
                while (rs.next()){
                    int id = rs.getInt("id");
                    String username = rs.getString("username");
                    String password = rs.getString("password");
                    // ...
                    System.out.println(id + "," + username + "," + password);
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }finally {
                // 释放资源
                JDBCUtil.close(rs,pstmt,conn);
            }
        }
    }
    




    附录:SQL数据

    这里准备了测试所用的sql

    /**
      * @Author: Langkye
      * @Description: Test Data
      */
    
    /* ------------>建库<------------ */
    # 查看当前数据库
    SELECT DATABASE();
    # 创建数据库
    CREATE DATABASE IF NOT EXISTS db CHARSET = 'utf8';
    # 使用数据库
    USE db;
    /* ------------>建表<------------ */
    -- 创建用户表
    DROP TABLE IF EXISTS user;
    CREATE TABLE user
    (
        `id`   INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增主键',
        `username` VARCHAR(32) UNIQUE NOT NULL COMMENT '用户名',
        `password` VARCHAR(100) NOT NULL COMMENT '密码',
        `name` VARCHAR(32) NOT NULL COMMENT '姓名',
        `gender`  ENUM ('男','女') DEFAULT '男' COMMENT '性别',
        `age`  INT(3)       NULL COMMENT '年龄',
        `birthday`  DATE      NOT NULL COMMENT '出生日期',
        `address` VARCHAR(100) NULL COMMENT '地址'
    )/* AUTO_INCREMENT=1001 */;
    
    -- 查看创建的表
    SHOW TABLES;
    -- 查看表字段及其属性
    SHOW FULL COLUMNS FROM user;
    -- 查看表结构
    DESCRIBE user;
    DESC user;
    
    
    /* ------------>插入记录<------------ */
    -- 插入 [用户] 记录
    DELETE FROM user WHERE 1=1;
    INSERT INTO user
    VALUES
           (NULL,'LinQinXia','admin', '李嘉欣','女', NULL, '1970-05-20', '中国'),
           (NULL,'ZhongLiTi','admin', '钟丽缇','女', NULL, '1970-05-20', '中国'),
           (NULL,'ZhangTing','admin', '张庭','女', NULL, '1970-05-20', '中国'),
           (NULL,'ZhuYin','admin', '朱茵','女', NULL, '1971-05-20', '中国'),
           (NULL,'YuFeiHong','admin', '俞飞鸿','女', NULL, '1971-05-20', '中国'),
           (NULL,'YuanYongYi','admin', '袁咏仪','女', NULL, '1971-05-20', '中国'),
           (NULL,'HongXin','admin', '洪欣','女', NULL, '1971-05-20', '中国'),
           (NULL,'NingJing','admin', '宁静','女', NULL, '1972-05-20', '中国'),
           (NULL,'TaoHng','admin', '陶虹','女', NULL, '1972-05-20', '中国'),
           (NULL,'CaiShaoFen','admin', '蔡少芬','女', NULL, '1973-05-20', '中国'),
           (NULL,'LiBingBing','admin', '李冰冰','女', NULL, '1973-05-20', '中国'),
           (NULL,'ZhouXun','admin', '周迅','女', NULL, '1974-05-20', '中国'),
           (NULL,'WangYan','admin', '王艳','女', NULL, '1974-05-20', '中国'),
           (NULL,'LinZhiLing','admin', '林志玲','女', NULL, '1973-05-20', '中国'),
           (NULL,'JiaJingWeng','admin', '贾静雯','女', NULL, '1973-05-20', '中国'),
           (NULL,'ChenDeRong','admin', '陈德容','女', NULL, '1973-05-20', '中国'),
           (NULL,'HeMeiXi','admin', '何美钿','女', NULL, '1975-05-20', '中国'),
           (NULL,'ZhaoWei','admin', '赵薇','女', NULL, '1976-05-20', '中国'),
           (NULL,'LinXinRu','admin', '林心如','女', NULL, '1976-05-20', '中国'),
           (NULL,'ShuQi','admin', '舒淇','女', NULL, '1976-05-20', '中国'),
           (NULL,'SunLi','admin', '孙莉','女', NULL, '1976-05-20', '中国'),
           (NULL,'DaS','admin', '大S','女', NULL, '1976-05-20', '中国'),
           (NULL,'ChenShu','admin', '陈数','女', NULL, '1976-05-20', '中国'),
           (NULL,'HuangYi','admin', '黄奕','女', NULL, '1976-05-20', '中国'),
           (NULL,'JiangZuPing','admin', '江祖平','女', NULL, '1978-05-20', '中国'),
           (NULL,'ZhangZiYi','admin', '章子怡','女', NULL, '1979-05-20', '中国'),
           (NULL,'GaoYuanYuan','admin', '高圆圆','女', NULL, '1979-05-20', '中国'),
           (NULL,'ChenHao','admin', '陈好','女', NULL, '1979-05-20', '中国'),
           (NULL,'ChenQiaoEn','admin', '陈乔恩','女', NULL, '1979-05-20', '中国')
    ;
    -- 查看记录是否添加成功
    SELECT * FROM user;
    
  • 相关阅读:
    02-SpringCloud 基础框架搭建
    01-SpringCloud 理论
    ES7 语法详解(async 与 await(重点))
    ES6 语法详解(Set和Map(重点))
    ES6 语法详解(对象扩展)
    ES6 语法详解(数组扩展)
    ES6 语法详解(数值扩展)
    ES6 语法详解(字符串扩展)
    ES6 语法详解(class关键字)
    ES6 语法详解(Generator函数)
  • 原文地址:https://www.cnblogs.com/langkyeSir/p/13176262.html
Copyright © 2011-2022 走看看