JDBC和数据库连接池

本文详细介绍了JDBC的概念、原理和开发步骤,包括JDBC工具类和预处理对象PreparedStatement的使用,强调了其预编译特性和安全性。此外,文章探讨了JDBC控制事务的API和步骤,并对比了JDBC与数据库连接池的区别。接着,文章介绍了三种常用的数据库连接池——DBCP、C3P0和Druid,阐述了它们的特点、配置和使用方法。最后,提到了DbUtils工具类简化JDBC操作以及数据库批处理和MySQL元数据的相关知识。
摘要由CSDN通过智能技术生成

一JDBC

        1、概念:JDBC是 Java 访问数据库的标准规范.是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范.

        2、原理:JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需 要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。

        3、JDBC的开发步骤:步骤1:搭建开发环境,引入数据库的驱动。
                                             步骤2:在程序中加载数据库驱动。
                                             步骤3:获得数据库连接。
                                             步骤4:编写SQL.执行SQL。
                                             步骤5:释放资源。

        4、代码实现:

package www.lagou.app;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCTest {
    public static void main(String[] args) throws Exception {
        //1.注册驱动 (可以省略)
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接 connection连接对象
        String url = "jdbc:mysql://localhost:3306/test01?characterEncoding=UTF-8";
        Connection con = DriverManager.getConnection(url, "root", "root");
        //3.获取语句执行平台 Statement
        Statement statement = con.createStatement();
        //4.执行SQL
        String sql = "create table test(id int,name varchar(20),age int);";
        int i = statement.executeUpdate(sql);
        System.out.println(i);
        //5.关闭流
        statement.close();
        con.close();
    }
}

        5、JDBC工具类

package www.lagou.utils;
import java.sql.*;
public class JDBCUtils {
    //1. 将连接信息定义为 字符串常量
    public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/db4?characterEncoding=UTF-8";
    public static final String USER = "root";
    public static final String PASSWORD = "123456";
    //2.静态代码块
    static{
        try {
            //1.注册驱动
            Class.forName(DRIVERNAME);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //3.获取连接的 静态方法
    public static Connection getConnection(){
        try {
            //获取连接对象 并返回
            Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
            return connection;

        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
    //4.关闭资源的方法
    public static void close(Connection con, Statement statement){

        if(con != null && statement != null){

            try {
                statement.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(Connection con, Statement statement, ResultSet resultSet){
        if(con != null && statement != null){
            try {
                resultSet.close();
                statement.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

        6、预处理对象

                ①、概念:PreparedStatement 是 Statement 接口的子接口,继承于父接口中所有的方法。它是一个预编译的 SQL 语句对象。
                        预编译:  是指SQL 语句被预编译,并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

                ②、特点:因为有预先编译的功能,提高 SQL 的执行效率。 可以有效的防止 SQL 注入的问题,安全性更高。

                ③、常用方法:

                ④、使用步骤:

                        步骤一:编写 SQL 语句,未知内容使用?占位

                        步骤二:获得 PreparedStatement 对象

                        步骤三:设置实际参数:setXxx( 占位符的位置, 真实的值)

                        步骤四:执行参数化 SQL 语句

                        步骤五:关闭资源

                ⑤、常用设置参数方法:

                 ⑥、Statement 与 PreparedStatement的区别?

                        区别一: Statement用于执行静态SQL语句,在执行时,必须指定一个事先准备好的SQL语句。

                        区别二:PrepareStatement是预编译的SQL语句对象,语句中可以包含动态参数“?”,在执行时可以为“?”动态设置参数 值。

                         区别三:PrepareStatement可以减少编译次数提高数据库性能。

        7、JDBC控制事务

                ①、事务相关API

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值