JDBC基本使用

JDBC简介

JDBC,全程为Java Database Connectivity,即Java数据库连接。允许Java程序与关系型数据库进行交互。通过 JDBC,程序可以连接到数据库并执行SQL语句,实现对数据库的增、删、查、改等操作。

JDBC定义了统一的接口规范,而各个数据库厂商根据该规范提供具体的接口实现。这些实现类通常封装在JAR文件中,也就是常说的数据库驱动JAR包。

JDBC工作流程

JDBC的工作原理基于客户端/服务器模式。Java程序作为客户端,与数据库服务器建立连接,并通过JDBC API向数据库发送SQL请求。数据库根据SQL语句执行相关操作,返回结果到Java程序。开发者通过JDBC提供的API对这些操作进行处理。

JDBC与数据库交互的基本流程通常如下:

1.加载数据库驱动程序:在程序中加载对应数据库的JDBC驱动程序。

2.建立数据库连接:通过DriverManager或DataSource获取Connection对象。

3.创建Statement或PreparedStatement:通过Connection创建Statement或PreparedStatement来执行SQL语句。

4.执行SQL语句:通过Statement或PreparedStatement执行SQL语句操作数据库。

5.处理结果:如果执行查询操作,使用ResultSet获取结果并进行处理。

6.关闭资源:在操作完成后,关闭ResultSet、Statemen或PreparedStatement和Connection等资源,释放数据库连接。

JDBC核心组件

DriverManager

用于管理JDBC驱动的服务类,程序中主要使用该类来获取Connection对象,从而建立与数据库的连接。它负责加载并管理可用的数据库驱动,确保正确选择适合当前数据库的驱动程序。

常用函数:

// 注册驱动(JDK6之后无需再注册)
public static void registerDriver(java.sql.Driver driver)

// 获取连接对象
public static Connection getConnection(String url,String user, String password)

Connection

Connection代表与数据库的连接对象,每个Connection实例对应一个物理数据库连接会话。在访问数据库之前,必须先获取Connection对象。Connection是 JDBC 操作的核心,提供了执行 SQL 语句和管理连接生命周期的功能。Connection还负责管理事务,提供了commit和rollback方法,用于提交事务和回滚事务。

常用函数:

// 返回一个Statement对象
Statement createStatement();

// 返回预编译的Statement对象,即PreparedStatement对象
PreparedStatement prepareStatement(String sql);

// 返回CallableStatement对象,用于调用存储过程
CallableStatement prepareCall(String sql);

// 创建一个保存点,在事务中,保存点允许在事务中回滚到特定点,而不必回滚整个事务
Savepoint setSavepoint();

// 以指定名字来创建一个保存点
Savepoint setSavepoint(String name);

// 设置事务的隔离级别
// 隔离级别如下
// Connection.TRANSACTION_READ_UNCOMMITTED:允许脏读(最低的隔离级别)
// Connection.TRANSACTION_READ_COMMITTED:不允许脏读,但允许不可重复读
// Connection.TRANSACTION_REPEATABLE_READ:不允许脏读和不可重复读,但可能会发生幻读
// Connection.TRANSACTION_SERIALIZABLE:最高的隔离级别,完全防止脏读、不可重复读和幻读
void setTransactionIsolation(int level);

// 事务回滚
void rollback();

// 事务回滚到指定的保存点
void rollback(Savepoint savepoint);

// 设置自动提交模式
// true:启用自动提交模式,意味着每个SQL语句都将在执行后自动提交
// false:禁用自动提交模式,事务的提交需要手动调用commit(),事务的回滚需要手动调用rollback()
void setAutoCommit(boolean autoCommit);

// 提交事务
void commit();

Statement

Statement通过Connection获取,用于执行SQL语句并与数据库进行交互。然而,由于SQL语句通常是直接拼接在代码中的,如果未对用户输入进行充分的校验和处理,容易导致SQL注入攻击的风险。此外,Statement每次执行SQL时都需要重新编译语句,因此在性能上相对较低。

常用函数:

// 执行SQL查询语句,并返回查询结果ResultSet
ResultSet executeQuery(String sql);

// 执行DML,返回受影响的行数,也可以用于执行DDL,执行DDL返回的结果是0
int executeUpdate(String sql);

// 可执行任何SQL,如果执行后第一个结果为ResultSet,则返回true,如果执行后第一个结果为受影响的行数或者没有任何结果,则返回false
boolean execute(String sql);

// 获取当前Statement对象所允许的最大字段大小。字段大小是指单个字段可以存储的最大字符数(对于字符串类型的字段)
int getMaxFieldSize();

// 允许设置Statement对象所允许的最大字段大小。这个方法的目的是限制查询结果中每个字段的最大字节数。这可以防止返回非常大的字段(如大型文本或二进制数据)对内存和性能产生负面影响,如果设置为0,表示没有限制
void setMaxFieldSize(int max);

// 获取当前Statement对象的最大行数限制。
int getMaxRows();

// 设置Statement对象查询结果的最大行数限制,如果设置为0,则表示没有限制。
void setMaxRows(int max);

// 获取当前Statement对象的查询超时时间。
int getQueryTimeout();

// 设置Statement对象的查询超时时间,设置为0表示没有超时限制。
void setQueryTimeout(int seconds);

// 取消当前正在执行的SQL查询,在执行长时间运行的查询时,可以调用此方法来取消查询。
void cancel();

// 将多个SQL语句一起提交到数据库执行,通常用于批量插入、更新或删除。
void addBatch(String sql);

// 在执行批处理之前或之后,清空已经添加到批处理中的SQL语句&#x

你可能感兴趣的:(Java,java)