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();