首页 > 编程笔记 > Java笔记 阅读:8

JDBC Connection接口的用法(附带实例)

Java 程序中,所有的数据库操作都是从 Connection 接口开始的,该接口可以实现与特定数据库的连接。

Connection 接口中的常用方法如下表所示:

表:Connection 接口的常用方法
方法 方法描述
Statement createStatement() throws SQLException 创建一个 Statement 对象
PreparedStatement prepareStatement(String sql) throws SQLException 创建一个 PreparedStatement 类型的对象
CallableStatement prepareCall(String sql) throws SQLException 创建一个 CallableStatement 对象,此对象用于调用数据库的存储过程
DatabaseMetaData getMetaData() throws SQLException 得到数据库的元数据
Void setAutoCommit(boolean autoCommit) throws SQLException 设置数据库的自动提交,与事务有关
Savepoint setSavepoint() throws SQLException 设置数据库的恢复点,与事务有关
void close() throws SQLException 关闭数据库

接下来,通过案例来演示 Connection 接口的使用(【实例 1】):
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Demo {
    // MySQL 的数据库驱动程序
    public static final String DRIVER = "com.mysql.jdbc.Driver";
    // 数据库的 URL 连接地址
    public static final String URL    = "jdbc:mysql://localhost:3306/school";
    // 数据库的账号
    public static final String UNAME  = "root";
    // 数据库的密码
    public static final String PSWD   = "root1";

    // main() 方法,连接数据库测试是否连接成功
    public static void main(String[] args) {
        Connection connection = null;
        try {
            // 把驱动加载进来,建立连接
            Class.forName(DRIVER);
            // 建立连接,写上对应的数据库 URL 和账号密码
            connection = DriverManager.getConnection(URL, UNAME, PSWD);
            System.out.println("数据库连接成功");
        } catch (ClassNotFoundException e) {
            // 如果有异常会执行该语句
            System.out.println("加载失败");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("连接数据库错误");
            e.printStackTrace();
        } finally {
            try {
                // 执行结束,要关闭数据库连接
                connection.close();
                System.out.println("关闭数据库");
            } catch (SQLException e) {
                System.out.println("关闭数据库异常");
                e.printStackTrace();
            }
        }
    }
}
程序的运行结果如下:

数据库连接成功
关闭数据库

数据操作之前需要获取数据库的连接,操作之后需要将数据库访问过程中建立的各个数据库对象按顺序进行关闭,防止系统资源的浪费。实例程序中,finally 代码块里执行的 Connection 接口的 close() 方法,就是关闭连接。

在后面的代码中,很多地方都需要获取数据库的连接并关闭连接,所以将这部分代码提到一个公共的 BaseDAO 类中,并将这个类放到 com.biancheng.net 中,代码如下:
package com.biancheng.net;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDAO {
    // 定义 MySQL 的数据库驱动程序
    public static final String DRIVER = "com.mysql.jdbc.Driver";
    // 数据库连接字符串
    public static final String URL =
        "jdbc:mysql:///school?useUnicode=true&characterEncoding=utf-8";
    // 数据库服务器账号
    public static final String USER = "root";
    // 数据库服务器密码
    public static final String PSWD = "root";

    // 获取连接方法
    public static Connection getConnection() {
        Connection con = null;
        try {
            // 加载驱动类
            Class.forName(DRIVER);
            // 获取连接
            con = DriverManager.getConnection(URL, USER, PSWD);
        } catch (ClassNotFoundException e) {
            System.out.println("加载失败");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("连接数据库错误");
            e.printStackTrace();
        }
        return con;
    }

    // 关闭数据库对象方法
    public static void closeAll(Connection con) {
        try {
            if (con != null) {
                con.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

接下来,修改实例 1,通过 BaseDAO 类完成数据库的连接和关闭:
import com.biancheng.net.BaseDAO;
import java.sql.Connection;

public class Demo {
    public static void main(String[] args) {
        // 从 BaseDAO 获取数据库连接
        Connection conn = BaseDAO.getConnection();
        System.out.println("数据库连接成功");

        // 关闭数据库连接
        BaseDAO.closeAll(conn);
        System.out.println("关闭数据库");
    }
}
程序的运行结果如下:

数据库连接成功
关闭数据库

运行结果和实例 1 一致。

JDBC 连接数据库之后添加到数据库中的数据有可能出现乱码,出现乱码的原因是我们使用的字符集和数据库的字符集不一致。所以,需要在 URL 中定义字符集。定义字符集时使用 useUnicode=true&characterEncoding=utf-8,该语句的意思是将国际的 gb2312 编码转化为 Unicode 编码。在数据库中可以使用中文。

相关文章