JDBC:
|-- 数据库互联。
|-- 由SUN公司所制定的用来访问数据库的规范。
|-- 数据库数据 <= 交互 => 应用程序。
JDBC包含主要两个部分:
|-- part 1.由SUN公司制定的规范接口
|-- java.sql --> 核心包
|-- javax.sql --> 扩展包
|-- part 2.由数据库厂商所提供的数据库驱动程序,它们实现了part 1部分。
JDBC的驱动程序包含以下四种类型:
|-- 第一代驱动(JDBC - ODBC Bridge)
|-- 首先把JDBC的调用转换成ODBC的调用,再用ODBC与具体的数据库系统通信。
|-- 第二代驱动 (Native - API party - Java driver 本地API部分Java驱动)
|-- Conrerts JDBC calls into calls on the native client API of a specific RODMS.
|-- 缺点:不同的数据库需要安装不同的客户端(每台电脑都要装)。
|-- 第三代驱动 (JDBC - net pure Java driver 网络纯Java驱动)
|-- 提供网络节点,通过网络节点访问数据库。
|-- Translates JDBC calls into a DBMS independent net protocol, which is then translated
to a DBMS protocol by a server.
|-- 第四代驱动 (Native protocol pure Java driver 本地协议纯Java驱动)
|-- Conrerts JDBC calls directly into the network protocol used by DBMS.
JDBC核心API
java.sql
|-- Driver [Interface] 所有驱动必需实现的接口
|-- DriverManager [Class] 用来管理一组数据库的驱动
|-- Connection [Interface] 与数据库的一个连接对象
|-- Statement [Interface] 用于执行一个静态的SQL语句,并返回它所生成的结果对象
|-- PreparedStatement [Interface] 表示预编译SQL语句对象(动态)
|-- CallableStatement [interface] 表示用来调用存储过程对象
|-- ResultSet [Interface] 存放查询结果集的对象
|-- Type [Class]
|-- Blob [Interface] 二进制大对象
|-- Clob [Interface] 字符大对象
|-- SQLException [Class] 数据库最底层异常(已检测异常)
|-- SQLWarning [Class] 警告
|-- DatabaseMetaData [Class] 基本数据的元数据
|-- ResultSetMetaDate [Class] 结果集的元数据
编写JDBC程序步骤
step1:注册驱动程序 [也就是把驱动加载到JVM中]
1.Class.forName("驱动类的全限定名");
如:Class.forName("oracle.jdbc.driver.OracleDriver");
Class.forName("com.mysql.jdbc.Driver");
2.使用new操作符来创建驱动类对象
如:Driver d = new oracle.jdbc.driver.OracleDriver();
//DriverManager.registerDriver(d);
3.使用系统属性-Djava.drivers来指定驱动类
如:-Djava.drivers = com.mysql.jdbc.Driver;
step2:获取数据库连接 [Connection]
如:
String url = "主协议:此协议:thin:@ip地址:端口号:数据库实例名";
String user = "XXX";
String pwd = "XXX";
Connection con = DriverManager.getConnection(url,user,pwd);
step3:创建执行的SQL的环境 [也就是创建Statement]
如:Statement stm = con.createStatement();
step4:执行SQL语句
如:String sql = "select ..........";
ResultSet rs = stm.executeQuary(sql);
step5:如果是select语句,则处理结果集 [ResultSet]
如:while(rs.next()){
rs.getXXX系列的方法();
}
step6:释放资源 [close]
如:if(con != null) con.close();
if(stm != null) stm.close();
if(rs != null) rs.close();
My Java study notes.