JDBC入门到精通(上)

259 阅读3分钟

JDBC入门到精通(上)

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

1. 基本知识

  • 概念
  1. JDBC: java data base Connection 数据库连接接口集合、接口、类 群,java提供一套标准,增删改查各大厂家的数据库
  1. 常见的数据库:MySQL Oralce DB2 MongDB
  • JDBC本质

JDBC本质.png

  • 下载安装

实现JDBC接口的工具包需要在各大数据库官网进行下载,JDK包中是不包括的,下面是我使用的mysql 工具包,对应版本是mysql 5 的都可以使用,大家也可以去官网下载,具体教程自行度娘 !

链接:pan.baidu.com/s/1SnUBzK7h… 提取码:us4v

  • 在IDEA 里面使用 jar包
第一步:   在src 同级处建一个目录directory,把jar包放进目录
第二步:    IDEA        添加外部jar
第三步:    在jar包上点击右键 -> add as Library -> 选择级别

提示: 提供一个navicate 绿色版软件版,里面有注册机,需要的自行安装哦!

链接:pan.baidu.com/s/1_8l0IdwZ… 提取码:o0n1

2. 通过java程序操作数据库

基本步骤:

  1. 注册驱动
  2. 建立简介
  3. 获取数据库操作对象
  4. 执行sql语句
  5. 处理结果
  6. 释放资源

我们就以emp表进行演示

emp表.png

  • 通过java实现增添员工的效果

  • localhost : 默认为本地地址 也可以写成127.0.0.1 都是一样的效果
package jdbc;
​
import com.mysql.jdbc.Driver;
​
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
​
public class JDBCTest06 {
    public static void main(String[] args) {
        /*
        * 1、注册驱动
        * 2、获取连接
        * 3、获取数据库操作对象
        * 4、执行sql语句
        * 5、处理结果
        * 6、释放资源
        * */
        Statement sta = null;
        Connection conn = null;
​
        try {
            DriverManager.registerDriver(new Driver());
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test810","root","123456");
            
            sta = conn.createStatement();
            String sql = "insert into empsss (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (2022,'TOM','MANAGER',9455,now(),2500,100,20)";
            int count = sta.executeUpdate(sql);
            System.out.println(count>0 ? "添加成功!":"添加失败!");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if(sta !=null){
                    sta.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            try {
                if(conn !=null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
​
    }
}

运行结果:

图片一.png

  • 获取数据库的方式(以上面的例题为例)

  • 注意:这里知识提及有这么写方法,这篇文章主要是以入门为主,后续的方法使用,将在之后的文章中展现

方式一 :

  • 使用DriverManager 对数据库地址、账号、密码进行统一管理
DriverManager.registerDriver(new Driver());
conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/test810","root","123456");
sta = conn.createStatement();

方式二:(推荐)

  • 通过映射的方式获取数据库,代码更加简介
//            DriverManager.registerDriver(new Driver());
            Class clazz = Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection
            ("jdbc:mysql://localhost:3306/test810","root","123456");
            sta = conn.createStatement();

因为调用Class 类 的forName 会找到Driver包执行 Driver 字节码文件,在调用这个类的时候,会首先加载静态代码块里面的代码,恰好 DriverManager.registerDriver(new Driver()); 这行代码在静态代码块里面,所以我们不用再写重复的代码

图片2.png

方式三:(最终方式,推荐使用)

  • 把相关信息都写到文件里面(数据库地址、账号、密码),通过集合找到配置文件信息

  • ResourceBundle的使用:注意事项

    1. 路径从src出发,再getBundle() 里面,路径不要再写src
    2. 读取文件一定要以properties结尾,只要写文件名,不需要写文件properties 后缀!、
    3. 通过 info.getString 方法获取对应的信息
            ResourceBundle info = ResourceBundle.getBundle("dbinfo");
            driver = info.getString("adsf");
            url = info.getString("url");
            user = info.getString("user");
            pwd = info.getString("pwd");
  • 最终形式的底层代码:

  • 通过集合读取配置文件信息,路径是从module包开始的,移植性不强,使用起来也比较复炸
            FileReader fr = new FileReader("day48/src/objinfo.txt");
            Properties info = new Properties();
            info.load(fr);
            fr.close();
            String objnames = info.getProperty("objname");
            System.out.println(objnames);
            String[] names = objnames.split(",");
​
            for (String name : names) {
                Class c = Class.forName(name);//触发类加载,类加载的时候会执行静态代码块
                Object obj = c.newInstance();
                System.out.println(obj);
            }

\