0%

JDBC

本文概述

JavaWeb学习笔记之JDBC

JDBC

概念

  • Java Database Connectivity Java数据库连接,Java语言操作数据库。
  • 定义一套操作所有关系型数据库的接口

步骤

  1. 导入驱动jar包

  2. 注册驱动

    Class.forName(“com.mysql.Driver”);

  3. 获取数据库的连接对象Connection

    Connection conn = DriverManager.getConnection(“jbdc:mysql://localhost:3306/数据库名称”,”root”,”password”);

  4. 定义sql

    String sql = “”;

  5. 获取执行sql语句的对象Statement

    Statement stmt = conn.createStatement();

  6. 执行sql,接收返回的结果

    int count = stmt.executeUpdate(sql); // 根据操作需求

  7. 处理结果

  8. 释放资源

    stmt.close();

    conn.close();

详解各个对象

  • DriverManager驱动管理对象

    1. 注册驱动

      static void registerDirver(Dirver driver): 注册给定的驱动程序DriverManager

      写代码用Class.forName(“com.mysql.Driver”);

      mysql5之后的驱动jar包可以省略注册驱动的步骤

    2. 获取数据库连接

      方法:static Connection getConnection(String url, String user, String password)

      参数: url: 指定连接的路径 : jbdc:mysql://ip地址:端口号/数据库名称

      ​ user/password:用户名和密码

  • Connection数据库连接对象

    1. 获取执行sql的对象
      • Statement createStatement();
      • PreparedStatement prepareStatement(String sql)
    2. 管理事务
      • 开启事务: void setAutoCommit(boolean autoCommit): 调用该方法设置参数为false,即开启事务
      • 提交事务: void commit()
      • 回滚事务: rollback()
  • Statement执行sql对象

    • 执行sql
      1. boolean execute(String sql): 可以执行任意的sql
      2. int executeUpdate(String sql): 执行DML(insert, update, delete)语句,DDL(create,alter,drop)语句
      3. ResultSet executeQuery(String sql): 执行DQL(Select)语句
  • ResultSet结果集对象

    • next(): 游标向下移动一行

    • getXxx(): 获取数据

      • Xxx:代表数据类型

      • 参数:

        1. int: 代表列的编号,编号从1开始
    1. String:列名称
    • 使用步骤
      1. 游标向下移动一行
      2. 判断是否有数据
      3. 获取数据
  • PrepareStatement执行sql对象

抽取JDBC工具类:

  • 配置文件

    jdbc.properties
        url=
        user=
        password=
  • 代码实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    /**
    * 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
    */
    static{
    //读取资源文件,获取值。

    try {
    //1. 创建Properties集合类。
    Properties pro = new Properties();

    //获取src路径下的文件的方式--->ClassLoader 类加载器
    ClassLoader classLoader = JDBCUtils.class.getClassLoader();
    URL res = classLoader.getResource("jdbc.properties");
    String path = res.getPath();
    System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties
    //2. 加载文件
    // pro.load(new FileReader("D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties"));
    pro.load(new FileReader(path));

    //3. 获取数据,赋值
    url = pro.getProperty("url");
    user = pro.getProperty("user");
    password = pro.getProperty("password");
    driver = pro.getProperty("driver");
    //4. 注册驱动
    Class.forName(driver);
    } catch (IOException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    /**
    * 获取连接
    * @return 连接对象
    */
    public static Connection getConnection() throws SQLException {

    return DriverManager.getConnection(url, user, password);
    }

    /**
    * 释放资源
    * @param stmt
    * @param conn
    */
    public static void close(Statement stmt,Connection conn){
    if( stmt != null){
    try {
    stmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    if( conn != null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }
-------------本文结束感谢您的阅读-------------

本文标题:JDBC

文章作者:Jungle

发布时间:2020年06月03日 - 14:29

最后更新:2020年06月03日 - 14:35

原始链接:http://yoursite.com/2020/06/03/JDBC/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Welcome to my other publishing channels