JDBC是什么?

——JDBC是Java数据库连接(Java DataBase Connectivity)技术的简称,它充当了Java应用程序与各种不同数据库之间进行对话的媒介。

JDBC有什么作用?

——它可以把数据持久保存,这就是一种持久化机制。

持久化

——持久化是将程序中的数据在瞬时状态和持久状态间转换的机制。通俗地讲就是瞬时数据(如内存中的数据,不能永久保存)持久化为持久数据(如持久化至数据库中,能够长久保存)。


JDBC的工作原理

1.JDBC API

JDBC API 由Sun公司提供,其中提供了Java应用程序与各种不同数据库交互的标准接口,如 Connection(连接)接口、Statement 接口、ResultSet(结果集)接口、PreparedStatement 接口等。

2.JDBC Driver Manager

JDBC Driver Manager(驱动程序管理器)由Sun公司提供,它是 JDBC 体系结构的支柱,负责管理各种不同的JDBC驱动,把 Java 应用程序连接到相应的 JDBC 驱动程序上。

3.JDBC 驱动

JDBC驱动由各个数据库厂商或第三方中间件厂商提供,负责连接各种不同的数据库。


JDBC API 介绍

——JDBC API 主要做三件事:与数据库建立连接、发送SQL语句、处理结果。

DriverManager 类:装载驱动程序,并为创建新的数据库连接提供支持。

Connection 接口:负责连接数据库并并担任传送数据的任务。

Statement 接口:由Connection产生,负责执行SQL语句。

ResultSet 接口:负责保存和处理Statement执行后所产生的查询结果。

PreparedStatement 接口:Statement的子接口,也由Connection产生,同样负责执行SQL语句。与Statement接口相比,PreparedStatement接口具有高安全性、高性能、高可读性和高可维护性的优点。


JDBC访问数据库的步骤、

1)加载JDBC驱动——Class.forName("JDBC驱动类的名称");

2)与数据库建立连接——Connection conn = DriverManager.getConnection(数据连接字符串,数据库用户名,密码);

3)发送SQL语句,并得到返回结果——Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SQL语句");

4)处理返回结果


Statement 接口和 ResultSet 接口

Connection接口常用的方法

方法名称

作用

void close()

立即释放此Connection 对象的数据库和JDBC资源

Statement createStatement()

创建一个Statement对象来将SQL语句发送到数据库

PreparedStatement

preparedstatement(String sql)

创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库

boolean isClosed()

查询此Connection对象是否已经被关闭

Statement 接口常用方法

方法名称

作用

ResultSet executeQuery(String sql)

可以执行SQL查询并获取ResultSet对象

int executeUpdate(String sql)

可以执行插入、删除、更新的操作,返回值是执行该操作所影响的行数

boolean execute(String sql)

可以执行任意SQL语句,若结果为ResultSet对象,则返回true;

若其为更新计数或者不存在任何结果,则返回false

ResultSet 接口常用方法及作用

方法名称

作用

boolean next()

将光标从当前位置向下移动一行

boolean previous()

将光标从当前位置向上移动一行

void close()

关闭ResultSet对象

int getInt(int columnIndex)

以int的形式获取结果集当前行指定列号的值

int getInt(String columnLabel)

以int的形式获取结果集当前行指定列名的值

float getFloat(int columnIndex)

以float的形式获取结果集当前行指定列号的值

float getFloat(String columnLabel)

以float的形式获取结果集当前行指定列名的值

String getString(int columnIndex)

以String的形式获取结果集当前行指定列号的值

String getString(String columnLabel)

以String的形式获取结果集当前行指定列名的值

int getRow()

得到光标当前所指行的行号

boolean absolute(int row)

光标移动到row制定的行


PreparedStatement接口

PreparedStatement 接口常用方法

方法名称

作用

boolean exectute()

在此PreparedStatement对象中执行SQL语句,该语句可以是任何SQL语句。

如果结果是Result对象,则返回true,如结果是更新计数或没有结果,则返回false

ResultSet executeQuery()

在此PreparedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象

int executeUpdate()

在此PreparedStatement对象中执行SQL语句,该语句必须是一个DML语句,如INSERT、UPDATE或DELETE语句;或者是无返回内容的SQL语句,如DDL语句。返回值是执行该操作所影响的行数

void setInt(int index,int x)

将指定参数设置为给定Java int 值。设置其它类型参数的方法与此类类似,如setFloat(int index,flost x)、setDouble(int index,double x)等

void setObject(int index,Object x)

使用定对象设置指定参数的值

使用PreparedStatement操作数据库的基本步骤有三步

1)创建PreparedStatement对象

——如:PreparedStatement pstmt = conn.preparedStatement("update dog set health=?,love=? where id=?");

2)设置每个输入参数的值

——如:pstmt.setInt(1,80);pstmt.setInt(2,15);pstmt.setInt(3,1);

3)执行SQL语句

——pstmt.executeUpdate();