版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/zhuojiajin/article/details/32150883

    在了解JDBC之前呢,我们能够先对ODBC做一个回想,以便于更好的理解JDBC。看名字也知道这两个关系不一般,他们实现了相同的功能。为应用程序连接和操作数据库提供支持。所以,我们先从ODBC開始。

ODBC

ODBC(Open Database Connectivity)是开放数据库互连的简称,是一种使用SQL的应用程序接口。它是一系列的规范和对数据库訪问的API。那么API+SQL就能够运行对数据库的操作。它是不依赖于DBMS的,即通过ODBC能够以相同的方式连接大部分数据库。

它包括了应用程序接口、驱动器管理器、数据库驱动器、数据源。

以下我们通过一副图来了解ODBC各个部分之间的关系:

JDBC

    之前说过了JDBC和ODBC实际上的功能是一致的,仅仅只是实现不太一样。首先ODBC是基于C++语言的。那么与Java的面向对象思想不太相符。通信比較困难。

因此,JDBC就出项了,即JDBC是基于JAVA语言的数据库訪问API接口。

然后其它内容就和ODBC基本一致了。仅仅要你了解了ODBC,那么在概念上基本就理解了JDBC。那么你须要做的就是对新面孔出项的接口再了解一遍就好了,而且这些接口的功能和ODBC是一致的,仅仅是说在实现上有细微的区别。以下也看看JDBC的结构图:

    连接方式

    由上面的结构图能够看出来。JDBC提供了多种不同的连接方式。这个做个大概的了解吧,由于这主要是数据库厂商关心的事,我们知道就好了,有些也确实不是非常明确。
     1、JDBC-ODBC连接桥:这样的方式是一位ODBC为基础的。上面说了java应用程序和ODBC之间的通信是有点麻烦的。可是ODBC作为一种数据库訪问的标准应用是非常广的。

因此JDBC通过映射ODBC的功能调用就保证了原来使用ODBC的数据库也能够非常方便的訪问的。

     2、本地API驱动:即把JDBC调用转换为对数据库接口的client二进制代码库的调用。

可是这个接口库依赖于产商。由于这里我们调用的不是数据库厂商提供的JDBC的接口实现。
     3、纯Java本地协议:即把JDBC调用映射为DBMS的网络监听协议的功能调用,监听程序监听到请求后运行相关的数据库操作。监听程序是由厂商提供的。

   经常使用接口简介

  DriverManager

    关于驱动程序怎样注冊的。我们不须要知道。我们须要知道的是,怎样调用方法去载入得到数据库驱动程序就好了。

即Class.forName()方法,调用这种方法须要传递一个包括该驱动程序类名的String对象作为实參。例如以下:   

    Class.forName("oracle.jdbc.driver.OracleDriver")

    Connection

    载入了驱动程序后,与数据库建立连接须要调用DriverManager.getConnection()方法,此方法须要数据库URL作为參数,不同的数据库URL的有些区别,但都符合“协议名 + Ip地址+port号+数据库名”的格式。数据库username与password假设有,也得加上。例如以下:    

        String url = "jdbc:oracle:thin:@localhost:1521:pdborcl";
String username = "123";
String password = "123";
Connection conn = DriverManager.getConnection(url, username, password);

    StateMent

    运行静态的SQL语句。它还能够组合多个SQL语句成为一个批处理,总体提交给数据库。我们通过Connection对象来创建Statement对象,然后用Statement的execute方法来运行SQL。另外PreparedStatement对象是继承自Statement对象的,这里我们用PreparedStatement为例。须要注意的是批处理仅仅能用Statement对象来运行。 

      PreparedStatement  pstmt = conn.prepareStatement("select * from t_user where userId=?");
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();

    ResultSet

    运行一个SQL查询之后的结果集,Result具有指向当前行的指针,能够用来读取结果集中的数据。初始时指针指向第一行前面。该对象的Next()方法能够移动指针。

假设Next()之后的行合法返回True,否则False。因此,循环时Next()方法作为推断根据。

    到这里JDBC的简介就结束了,JDBC在使用中充当了一个沟通者的角色。这让我想起姚明在NBA打球的那个设计模式:适配器模式,这也就成就了Java应用程序跨平台的特性。同一时候,JDBC、ODBC等也是面向接口编程思想的典型体现。

 对了,这里还缺了一个OLE DB。没有提及。下回吧……

数据库訪问技术之JDBC的更多相关文章

  1. 学习实践:使用模式,原则实现一个C++数据库訪问类

    一.概述 在我參与的多个项目中.大家使用libMySQL操作MySQL数据库,并且是源代码级复用,在多个项目中同样或相似的源代码.这种复用方式给开发带来了不便. libMySQL的使用比較麻烦.非常e ...

  2. Java数据库訪问小结

    </pre>1.JDBC訪问方法</p><p></p><p>DBHelper类訪问数据库.Dao类写数据訪问,View类进行应用,初学实例图 ...

  3. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010512579/article/details/24011761 在封装通用 SQLSERVER ...

  4. 使用ADO.NET对SQL Server数据库进行訪问

    在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础.再将面向对象程序设计语言的知识进行融合便可进行编程实战. 假设我们须要訪问一个企业关系 ...

  5. php訪问mysql数据库

    PHP訪问Mysql数据库 PHP能够通过mysql接口和mysqli接口訪问mysql数据库. 须要加入mysql和mysqli接口才干訪问mysql数据库. windows下配置amp: a.安装 ...

  6. 訪问远程WAMP 下phpmyadmin

    WAMP环境是一个非常优秀的webservice集成环境,它集成的phpmyadmin也是一款非常优秀的数据库訪问软件.wamp默认安装下,phpmyadmin工具仅仅能本地用,在站点开发中,数据库都 ...

  7. 嵌套SQL语句訪问DB2中SQLCA的调用技巧

    在IBM的关系型数据库产品DB2中,使用SQL Communication Area(SQLCA)将程序中嵌套的SQL语句执行情况返回给程序. 在程序中有针对性地对SQLCA实施调用,可对程序中各类S ...

  8. 假设在本地搭一个server和mysql数据库环境,假设使用java来訪问数据库

    我们能够使用speedamp来搭一个server环境,能够在http://download.csdn.net/detail/baidu_nod/7630265下载 解压后无需安装直接能够使用.点击Sp ...

  9. 动态IP或无公网IP时外网訪问内网ORACLE数据库

    ORACLE数据库是应用最多的一个数据库.一般项目应用.将ORACLE部署在内网,内网调用,及运维都仅仅能是内网完毕. 假设ORACLE主机或所在局域网没有固定公网IP,又想在外网对ORACLE进行訪 ...

随机推荐

  1. Java基础6:代码块与代码加载顺序

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  2. Oracle 查询结果集行数分析

    本人曾去某金融软件公司面试,交流中面试官问的一个问题是:"如果有 A.B 两张表,A 表中有 2 条数据,B 表中有 200 条数据,请问 SELECT * FROM A,B 能查出多少条数 ...

  3. Hibernate【inverse和cascade属性】知识要点

    Inverse属性 Inverse属性:表示控制权是否转移.. true:控制权已转移[当前一方没有控制权] false:控制权没有转移[当前一方有控制权] Inverse属性,是在维护关联关系的时候 ...

  4. mongos-sharding连接池配置

    ShardingTaskExecutorPoolMaxSize Maximum number of outbound connections each TaskExecutor connection ...

  5. ASP.NET MVC ETag & Cache等优化方法

    背景 最近有一个项目是用SmartAdmin + Jquery + EasyUI 一个ASP.NET MVC5的项目,一直存在一个性能问题,加载速度比较慢,第一次加载需要(在没有cache的情况下)需 ...

  6. Spring之BeanFactory和FactoryBean接口的区别

    目录 一.BeanFactory接口 二.FactoryBean接口 1.简单实现 2.增强实现 3.FactoryBean的实际使用案例 三.总结 @   Spring框架中的BeanFactory ...

  7. django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 ...

  8. 深度学习框架Keras介绍及实战

    Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行.Keras 的开发重点是支持快速的实验.能够以最小的时延 ...

  9. SDWebImage源码解析

    但凡经过几年移动开发经验的人去大公司面试,都会有公司问到,使用过哪些第三方,看过他们的源码嘛?而SDWebImage就是经常被面试官和应聘者的提到的.下面将讲述SDWebImage的源码解析以及实现原 ...

  10. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——AlbumView相册控件的使用方式

    AlbumView控件 一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个AlbumView控件到窗体界面上 修改 ...