- 预习检查
- JDBC的主要作用是什么?
- JDBC访问数据时常用的类和接口有哪些,它们的作用是什么?
- JDBC访问数据的步骤是什么?
- PreparedStatement与Statement相比,具有什么优势?
- 本章任务
- 使用纯Java方式连接数据库
- 使用JDBC查询所有宠物主人信息
- 使用JDBC插入宠物信息
- 本章目标
- 理解JDBC原理
- 掌握Connection接口的使用
- 掌握Statement接口的使用
- 掌握ResultSet接口的使用
- 掌握PreparedStatement接口的使用
- 为什么需要JDBC
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
- JDBC的工作原理
- JDBC API
- 提供者:Sun公司
- 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
- DriverManager类
- Connection接口
- Statement接口
- ResultSet接口
- DriverManager
- 提供者:Sun公司
- 作用:管理各种不同的JDBC驱动
- JDBC 驱动
- 提供者:数据库厂商
- 作用:负责连接各种不同的数据库
- JDBC API
- JDBC的基本操作流程
在myescilpe中使用:
导入jar包:
- JDBC API
JDBC API主要功能:与数据库建立连接、执行SQL语句、处理结果
- DriverManager :依据数据库的不同,管理JDBC驱动
- Connection :负责连接数据库并担任传送数据的任务
- Statement :由 Connection 产生、负责执行SQL语句
- ResultSet:负责保存Statement执行后所产生的查询结果
- JDBC编程模板
- JDBC驱动 5-1
JDBC驱动由数据库厂商提供
-
- 在个人开发与测试中,棵松使用JDBC-ODBC桥连方式
- 在生产型开发中,推荐使用纯Java驱动方式
- JDBC驱动 5-2
使用JDBC-ODBC桥方式连接数据库
-
- 将对JDBC API的调用,转换为对另一组数据库连接API的调用
- 优点:可以访问所有ODBC可以访问的数据库
- 缺点:执行效率低、功能不够强大
- JDBC驱动 5-3
- JDBC驱动 5-4
使用纯Java方式连接数据库
-
- 由JDBC驱动直接访问数据库
- 优点:完全Java代码,快速、跨平台
- 缺点:访问不同的数据库需要下载专用的JDBC驱动
- JDBC驱动 5-5
- JDBC应用
对宠物和主人信息进行管理
-
- 宠物和主人信息存储在MySQL数据库中
- 通过JDBC对宠物和主人进行增、删、改、查
- 使用Statement添加宠物
- 使用Statement更新宠物
- 使用Statement和ResultSet查询宠物
- Statement常用方法
方法名 | 说明 |
ResultSet executeQuery(String sql)
| 执行SQL查询并获取到ResultSet对象
|
int executeUpdate(String sql) | 可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数
|
boolean execute(String sql)
| 可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet |
- ResultSet常用方法
方法名 | 说明 |
boolean next() | 将游标从当前位置向下移动一行 |
boolean previous() | 游标从当前位置向上移动一行 |
void close() | 关闭ResultSet 对象 |
int getInt(int colIndex) | 以int形式获取结果集当前行指定列号值 |
int getInt(String colLabel) | 以int形式获取结果集当前行指定列名值 |
float getFloat(int colIndex) | 以float形式获取结果集当前行指定列号值 |
float getFloat(String colLabel) | 以float形式获取结果集当前行指定列名值 |
float getFloat(String colLabel) | 以float形式获取结果集当前行指定列名值 |
String getString(int colIndex) | 以String 形式获取结果集当前行指定列号值 |
String getString(String colLabel) | 以String形式获取结果集当前行指定列名值 |
- 为什么要使用PreparedStatement
使用JDBC完成主人登陆验证功能
- PreparedStatement
问题:
如何避免SQL注入的隐患?
分析
使用PreparedStatement接口
继承自 Statement接口
比Statement对象使用起来更加灵活,更有效率
- 使用PreparedStatement更新宠物
- 使用JDBC操作数据库--增删改查
- 总结