JDBC:java数据库互联



1. 什么是JDBC?
 ODBC的概念: Open Database Connectivity  开放的数据库连接, 它基于C语言开发
 是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API)
  
 JDBC(Java DataBase Connectivity)是Java与数据库的接口规范,
 JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),
 它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员
 提供标准的数据库API。 JDBC API定义了若干Java中的类,表示数据库
 连接、SQL指令、结果集、数据库元数据等。它允许Java程序员发送
 SQL指令并处理结果。通过驱动程序管理器,JDBC API可利用不同的驱动
 程序连接不同的数据库系统。

 JDBC保持了ODBC的基本特性,也独立于特定数据库。使用相同源代码的应用程序
 通过动态加载不同的JDBC驱动程序,可以访问不同的DBMS。连接不同的DBMS时,
 各个DBMS之间仅通过不同的URL进行标识。JDBC的 DatabaseMetaData接口提供了一系列方法,
 可以检查DBMS对特定特性的支持,并相应确定有什么特性,从而能对特定数据库的特性予以支持。
 与ODBC一样,JDBC也支持在应用程序中同时建立多个数据库连接,
 采用JDBC可以很容易地用SQL语句同时访问多个异构的数据库,
 为异构的数据库之间的互操作奠定基础。
 
 ----但是,JDBC除了具有ODBC的上述特点外,更具有对硬件平台、操作系统异构性的支持。
 这主要是因为ODBC使用的是C语言,而JDBC使用的是Java语言。
 Java语言具有与平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多优点,
 而JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性,
 JDBC应用程序可以自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。

 那么:JDBC 是由SUN公司制定的一套用来访问数据库的标准接口,
  所以,要通过JDBC去访问数据库,必须要数据库厂商或第三方来提供访问此数据库的驱动程序
  而这些驱动程序也必须要实现JDBC规范
  
现在,我们来了解一下 JDBC的四种类型的驱动:

 1. JDBC-ODBC bridge plus ODBC Driver
    Provides JDBC access via ODBC drivers.

 2. Native API partly Java Driver:
    convert jdbc calls into calls on the native
    
 3. JDBC-net pure java Driver
    Translates JDBC calls into a DBMS independent net protocol,
     which is then translated to a DBMS protocol by a server
     
 4. Native protocol pure java driver :
    把JDBC的调用直接转换成RDMBS的网络协议
    
---------------------------------------------------
Type 1: jdbc-odbc桥
Jdbc-odbc 桥 是sun公司提供的,是jdk提供的的标准api. 这种类型的驱动实际是把所有
jdbc的调用传递给odbc ,再由odbc调用本地数据库驱动代码.( 本地数据库驱动代码是指
由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll 文
件)

jdbc-odbc桥
|
odbc
|
厂商DB代码---------------数据库Server

Type 2: 本地Api驱动
本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库.这种方法需要本地
数据库驱动代码.

本地api驱动
|
厂商DB代码---------------数据库Server

Type3:网络协议驱动
这种驱动实际上是根据我们熟悉的三层结构建立的. jdbc先把对数局库的访问请求传递给网
络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用
传给数据库服务器.如果中间件服务器也是用java开法的,那么在在中间层也可以使用1,2型
jdbc驱动程序作为访问数据库的方法.

网络协议驱动---------中间件服务器------------数据库Server

Type4 本地协议驱动
这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.
由于4型驱动写的应用可 以直接和数据库服务器通讯.
这种类型的驱动完全由java实现,因此实现了平台独立性.

--
JDBC是由SUN公司制定的一组标准数据库访问接口和类所组成,
它收录于JAVASE的API中,但是,JDBC规则却是属性JAVAEE范畴的。
它由两个包组成:
标准包:java.sql
 定义了JDBC最核心的规范(interfaces)
扩展包:javax.sql
 定义了JDBC2.0扩展的功能。【目前JDBC为4.0,基于JDK6.0】

--
JDBC 核心API
java.sql.Driver [I] 数据库驱动接口,由数据库厂商负责实现。
java.sql.DriverManger [C] SUN实现的数据库驱动管理类。
  负责注册、删除驱动程序,并提供获取连接的方法。
 
java.sql.Connection [I]  代表数据库连接的接口
java.sql.Statement [I] 负责发送和执行SQL命令。
 \- PreparedStatement [I] 支持预编译的SQL命令
     \- CallableStatement[I] 可以调用存储过程
方法:
 boolean execute(String sql); //执行任意SQL命令
 ResultSet executeQuery(String selectSQL);
 int executeUpdate(String dmlSQL);

java.sql.ResultSet [I] 如果执行的select命令,则会有结果集。

以上所有的接口都将由数据库厂商提供的驱动实现。
如果你安装了MySql数据库,
则在如下目录下可以找到MySql的驱动jar包。
com.mysql.jdbc.Driver
--
JDBC编程的6大步:
1.注册驱动
Code:
  Class.forName("数据库驱动类全限定名");
  //本质就是把驱动类加载进 JVM中。

注:不同的数据库,驱动类名不一样,比如:
Oracle  -》 oracle.jdbc.driver.OracleDriver
            jdbc:oracle:thin:@localhost:1521:orcl
mysql  ->   com.mysql.jdbc.Driver
     jdbc:mysql://127.0.0.1:3306/ja0218
DB2 ->  xxx
Sql Server -> xxx

2.创建数据库连接
Code:
  String url = "jdbc:mysql://127.0.0.1:3308/rj14?useUnicode=true&characterEncoding=UTF8";
  String user = "jsd1211";
  String pwd = "jsd1211";
  Connection conn =
 DriverManager.getConnection(url,user,pwd);

MySql数据库连接URL的格式是:
驱动类型:数据库类型:@主机地址:端口:数据库名
注:MySql默认连接端口是:3306

Oracle数据库连接URL的格式是:
主协议:次协议:驱动类型:@主机地址:端口:数据库名
注:ORACLE默认连接端口是:1521

3.创建Statement  对象.
Code:
  Statement stmt = conn.createStatement();
  //Statement是专门用来发送SQL命令的

4.执行sql命令 / 发送sql命令
Code:
  String sql = "select id,name from s_dept";
  //String sql2 =
 "update s_emp set salary = salary+100 where id= 1";
  ResultSet rs = stmt.executeQuery(sql);  //查询
  //int count = stmt.executeUpdate(sql2);  //插入、更新、删除
  //返回值 count:代表操作了几条数据 ,
  //执行查询语句,会返回一个结果集

5.如果是查询语句,则处理结果集。
  while(rs.next()){
      //表示还有结果集,则取值
      int id = rs.getInt(1);  //写列的序号
      //或:int id = rs.getInt("id"); //写 列名
  }

6.释放资源
  //如果有结果集,先关结果集
  rs.close();
  //再关 Statement
  stmt.close();
  //最后,关Connection
  conn.close();

-- 6步精简如下:
//step1, register driver

//step2, Create Connection

//step3, Create Statement

//step4, execute SQL Command

//step5, if Select Statement, handler ResultSet

//step6, release Resources.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值