jdbc工具包

JDBC工具类

介绍

JDBC全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的JavaAPI。应用程序可通过这台API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。

JDBC实现细节

img

从上图可以看出,JDBC的实现包括三部分

  1. JDBC驱动管理器:负责注册特定的JDBC驱动器,主要通过Java.sql.DriverManager类
  2. JDBC驱动器API:由Sun公司负责制定,其中最主要的接口是java.sql.Driver接口
  3. JDBC驱动器:它是一种数据库驱动,由数据库厂商创建,也称为JDBC驱动程序,JDBC驱动器实现了JDBC驱动器API,负责与特定的数据库连接,以及处理通信细节。

JDBC常用API

1、Driver接口

Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。在编写JDBC程序时,必须要把指定数据库驱动程序或类库加载到项目的classpath中。

2、DriverManager接口

DriverManager类用于加载JDBC驱动并且创建与数据库的连接。在DriverManager类中,定义了两个比较重要的静态方法。

方法名称功能描述
registerDriver(Driver driver)该方法用于向DriverManager中注册给定的JDBC驱动程序
getConnection(String url, String user, String pwd)该方法用于建立和数据库的连接,并返回表示连接的Connection对象

3、Connection接口

Connection接口代表java程序和数据库的连接,在Connection接口中,定义了一系列的方法,具体如表所示:

方法名称功能描述
getMetaData()该方法用于返回表示数据库的元数据的DatabaseMetaData对象
createStatement()用于创建一个Statement对象来将SQL语句发送到数据库
prepareStatement(String sql)用于创建一个preparedStatement对象来将参数化的SQL语句发送到数据库
prepareCall(String sql)用于创建一个CallableStatement对象来调用数据库存储过程

4、Statement接口

Statement接口用于向数据库发送sql语句,在Statement接口中,提供了三个执行sql语句的方法,具体如下表:

方法名称功能描述
execute(String sql)用于执行各种sql语句,该方法返回一个boolean类型的值,如果为true,表示所执行的SQL语句具备查询结果,可通过Statement的getResultSet方法获得查询结果
executeUpdate(String sql)用于执行SQL中的insert、update和delete语句。该方法返回一个int类型的值,表示数据库中受该SQL语句影响的行数
executeQuery(String sql)用于执行SQL中的select语句,该方法返回一个表示查询结果的ResultSet对象

5、preparedStatement接口

preparedStatement是Statement的子接口,用于执行预编译的SQL语句。在PreparedStatement接口中,提供了一些基本操作的方法,具体如下表所示:

方法名称功能描述
executeUpdate()在此ProparedStatement对象中执行SQL语句,该语句必须是个DML语句或者是无返回内容的SQL语句,比如DDL语句
executeQuery()在此PreparedStatement对象中执行SQL语句查询,该方法返回的ResultSet对象
setInt(int parameterIndex, int x)将指定参数设置为给定的int值
setFloat(int parameterIndex, float x)指定参数设置为给定的float值
setString(int parameterIndex, String x)将指定参数设置为给定的String值
setDate(int parameterIndex, Date x)将指定参数设置为给定的Date值
addBatch()将一组参数添加到此PreparedStatement对象的批处理命令中
setCharacterStream(parameterIndex, reader, length)将指定的输入流写入数据库的文本字段
setBinaryStream(parameterIndex, x, length)将二进制的输入流数据写入到二进制字段中

6、CallableStatement接口

CallableStatement是PreparedStatement的子接口,用于执行SQL存储过程。在CallableStatement接口中,提供了一些基本操作的方法,具体如下表所示:

方法名称功能描述
registerOutParameter(int paramenterIndex, int sqlType)按顺序位置将out参数设置为SQL类型,其中,parameterIndex表示顺序位置,sqlType表示SQL类型
setNull(String parameterName, int sqlType)将指定参数设置为SQL类型的NULL
setString(String parameterName, String x)将指定参数设置为SQl类型的字符串
wasNull()查询最后一个读取的out参数是否为SQL类型的NULL
getInt(int parameterIndex)以Java语言中int值的形式获取指定的数据库中Integer类型参数的值

注意:由于CallableStatement接口继承PreparedStatement,preparedStatement接口又继承于Statement,因此CallableStatement接口中除了拥有自己的方法,同时也拥有了这两个父类接口中的方法

7、ResultSet接口

ResultSet接口表示select查询语句得到的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一个指向表格数据行的游标,ResultSet对象初始化时,游标在表格的第一行之前。下标列举了ResultSet接口中常用的方法:

方法名称功能描述
getString(int columnIndex)用于获取指定字段的String类型的值,参数columnIndex代表字段的索引
getString(String columnName)用于获取指定字段的String类型的值,参数columnName代表字段的名称
getInt(int columnIndex)用于获取指定字段的int类型的值,参数columnIndex代表字段的索引
getInt(String columnName)用于获取指定字段的int类型的值,参数columnName代表字段的名称
getDate(int columnIndex)用于获取指定字段的Date类型的值,参数columnIndex代表字段的索引
getDate(String columnName)用于获取指定字段Date类型的值,参数columnName代表字段的名称
next()将游标从当前位置向下移一行
absolute(int row)将游标移动到此ResultSet对象的指定行
afterLast()将游标移动到此ResultSet对象的末尾,即最后一行之后
beforeFirst()将游标移动到此ResultSet对象的开头,即第一行之前
previous()将游标移动到此ResultSet对象的上一行
last()将游标移动到此ResultSet对象的最后一行

代码展示

有两种方法:

第一种:直接赋值

创建一个方法类,用于存放数据库连接,加载驱动和关闭数据库的方法

// 连接数据库
public class JbConnection {

    // 加载jdbc连接mysql驱动
    private final static String drive = "com.mysql.jdbc.Driver";
    // 连接mysql数据的地址
    private final static String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false";
    // 连接mysql的用户名
    private final static String user = "root";
    // 连接mysql的密码
    private final static String pwd = "root";

    // 加载jdbc的驱动
    static {
        try {
            // 加载数据库连接驱动
            Class.forName(drive);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 连接MySQL的连接对象
    public static Connection getConn() {
        try {
            return DriverManager.getConnection(url, user, pwd);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    // 关闭连接
    public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

方法二:使用application.properties配置文件

创建一个配置文件,内容如下:

#加载jdbc连接mysql驱动
drive = "com.mysql.cj.jdbc.Driver"
#连接muysql数据的地址
url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false"
#连接mysql的用户名
user = "root"
#连接mysql的密码
pwd = "root"

Java代码如下:

// 加载jdbc连接mysql驱动
    private static String drive = null;
    // 连接mysql数据的地址
    private static String url = null;
    // 连接mysql的用户名
    private static String user = null;
    // 连接mysql的密码
    private static String pwd = null;





    // 加载jdbc的驱动
    static {
        try {
            FileInputStream in = new FileInputStream("application.properties");
            Properties properties = new Properties();
            properties.load(in);
            drive = properties.getProperty("drive");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            pwd = properties.getProperty("pwd");
            
        } catch (ClassNotFoundException | FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    // 连接MySQL的连接对象
    public static Connection getConn() {
        try {
            // 加载数据库连接驱动
            Class.forName(drive);
            return DriverManager.getConnection(url, user, pwd);
        } catch (SQLException | ClassNotFoundException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
今天也是拼命学习的一天!

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值