什么事JDBC:JDBC称为java数据库连接,它是一种用于数据库访问的应用程序API,由一组用java语言编写的类和接口组成,有了JDBC就可以用同一种的语法对对种关系数据库进行访问,为不用担心其数据库操作语言的差异。
有了JDBC,就不必为访问MySQL数据库专门写一个程序,为了访问Oracle有专门写了一个程序等等。
JDBC体系结构
JDBC Driver Interface(驱动程序管理器接口)
JDBC API
JDBC优缺点
优点:JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。
JDBC支持不同的关系数据库,这使得程序的可移植性大大增强。
JDBC API是面向对象的,可以让用户把常用的方法封装为一个类,以备后用。
缺点:使用JDBC,访问数据记录的速度会受到一定程度的影响,
JDBC结构中包含不同厂家的产品,这就给更改数据源带来了很大麻烦
JDBC核心接口与类
类
DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
SQLException 有关数据库操作的异常
接口
Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。
PreparedStatement:标识预编译的SQL语句的对象。
Statrment:用于执行静态SQL语句并返回它所生成结果的对象
ResulteSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成
CallableStatement:用于执行SQL存储过程的接口
DAO设计模式
在java项目专注于做访问数据库
创建JDBC应用程序的步骤
贾琏欲执事
加连语执释
加:加载驱动
连:获取连接对象
语:SQL语句
执:执行命令
释:释放资源
加载JDBC驱动程序:声明表示Oracle驱动类描述符的字符串变量driver
调用Class类的静态方法forName加载该驱动(注意异常处理)
建立与数据库的连接:DriverManager类提供getConnection方法可获得指定数据库的连接对象
public static Connection getConnection
(string url,String userName,String password)
throws SQLException
Oracle数据库的url格式为:
jdbc:Oracle:thin:@<主机名或IP>:1521:<数据库名>
建立于数据库的连接
修改类 JdbcOracleTest的main方法:
声明表示指定数据库url的字符串变量url
分别声明表示用户名和口令的字符串变量userName和password,分别初始化为SCOTT和TIGER
声明Connection接口对象con,赋值为DriverManager类的getConnection方法的返回值
输出打印“数据库连接成功”的提示消息
获得Statement对象
Connement接口中提供可获得Statement对象的方法:
Statement createStatement()throws SQLException
可调用重载的creatStatement方法,可指定参数,设置数据库操作结果的相关属性。
执行SQL语句
子工程类JdbcOracleTest的main方法中增肌操作数据库的代码:
获得可发送SQL命令的Statement对象st
调用对象st的excuteQuery方法发送SQL查询命令,查询SCOTT下的表DEPT,获得所有记录数据,返回结果集对象rs
操作结果集对象
ResultSet接口提供可对结果集进行操作的方法:
移动结果集操作指针:boolean next()throws SQLException
指定数据类型根据传入的名字获取指定列的值:Xxx getXxx(String columnName)throws SQLExceotion
指定数据类型根据传入列的编号获取指定列的值:Xxx getXxx(1) throws SQLException
创建JDBC应用
ResultSet接口的getXxx方法
在工程主类JdbcOracleTest的main方法中增加处理结果集的代码:
以rs对象的next()方法作为while循环的条件,调用对象rs的getXxx方法,指定列名和类型,获取结果集对象中的DEPT表的所有数据,并打印输出。
关闭操作对象及连接
可调用接口ResultSet、Statement、Connection中的关闭方法,立即释放数据库和JDBC相关资源:
void close() throws SQLException
JDBC日期时间处理
对于数据库种不同的时间类型,要分别采用与之相对应的Java包装类来存取:
日期类型用java.sql.Date
时间类型用java.sql.Time
日期/时间类型用java.sql.Timestamp;
getTimestamp()可以把年月日时分秒都取出来,getDate()只能取出年月日,getTime()只能取出时分秒。
JDBC的日期/时间类型转换为字符串
Timestamp timeStamp = //通过数据库访问获取到该数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = sdf.format(timeStamp);
•PreparedStatement接口
–PreparedStatement接口是Statement接口的子接口,允许使用不同的参数多次执行同样的 SQL 语句。
–Connection接口提供创建PreparedStatement对象的方法,可指定SQL语句:PreparedStatement prepareStatement(String sql)
throws SQLException
PreparedStatement接口优点:
可动态设置参数
增加了预编译功能
提供执行速度
DAO设计模式
什么是DAO:Date Access Ob ject(数据存储对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
DAO模式的作用:隔离业务逻辑代码和数据访问代码
隔离不同数据库的实现
DAO模式的组成部分:
DAO接口,DAO实现类,实体类,数据库连接盒关闭工具类
什么是分层开发
一种化大为小,分而治之的软件开发方法
分层开发的特点及好处
分层的特点
每一层都有自己的职责
上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用其功能
上一层调用下一层的功能,下一层不能调用上一层功能
分层开发的好处:
各层专注于自己功能的实现,便于提高质量
便于分工协作,提高开发效率
便于代码复用
便于程序扩展
分层原则
封装性原则
每个层次向外公开接口,但是隐藏内部细节
顺序访问原则
下一层为上一层服务,但不适用上层的服务
实体类
私有的成员变量
公共的get,set方法
构造函数
一张表对应一个实体类,表里的每个字段对应一个属性
DAO接口
只有四类方法,增删改查
界面三个取调转
取参数、调用底层方法、跳转界面