1、什么是JDBC?
JDBC(Java DataBaseConnectivity)是sun公司提供的一套统一的接口规范,Java程序只需要使用JDBC就可以操作任何数据库,
JDBC实现类由各个数据库厂商提供。
2、数据库驱动
我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。
3、JDBC中的主要接口/类
DriverManager:驱动管理
DriverManager | 管理一组 JDBC 驱动程序的基本服务。 |
Connection | 与特定数据库的连接(会话)。 |
Statement | 用于执行静态 SQL 语句并返回它所生成结果的对象。 |
//推荐这种方式,不会对具体的驱动类产生依赖。
//方式二:DriverManager.registerDriver(com.mysql.jdbc.Driver);
//会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。
4、Connection 连接 接口 :
Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果。DriverManager.getConnection(url, user, password)方法建立在JDBC URL中定义的数据库Connection连接上。
应用一:获得SQL的操作对象
Statement conn.createStatement() 该对象可以将SQL发送给数据库进行执行
PreparedStatement conn.prepareStatement(sql) 对SQL语句进行预编译,防止SQL注入
5、Statement 接口:
用于将SQL 发送给数据库 获得操作结果
常用Statement方法:
executeUpdate 用于向数据库发送 insert update delete 语句,返回int 类型参数,代表影响记录行数。
executeQuery 用于向数据库发送 select 语句,返回ResultSet 结果集对象。
execute 用于数据库发送任何SQL语句(包括 DDL DML DCL) 返回boolean ,SQL执行结果是ResultSet 返回true,否则 false。
发送多条SQL(批处理):
addBatch(sql) 将SQL加入批处理队列
executeBatch() 执行队列中所有SQL语句 ,一次性向数据库发送多条SQL
6.ResultSet接口
ResultSet提供检索不同类型字段的方法,常用的有:
- getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。
- getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。
- getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。
- getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。
- getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。
Connection 接口的 createStatement() 返回Statement对象,操作SQL后 产生ResultSet 默认执行next 向前滚动,不支持在滚动中对数据进行修改 (只读不执行滚动)
Connection 接口还提供 createStatement(int resultSetType, int resultSetConcurrency) 在创建Statement对象 设置结果集类型,并发策略
8、 ResultSet 滚动结果集常用方法
next():移动到下一行
previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面
afterLast() :移动到resultSet的最后面
updateRow() :更新行数据
9、优化释放资源,确保资源能够释放 ---- 将代码放入finally 代码块