版权声明:本文为博主原创文章,未经博主同意不得转载。 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. 从无到有-在create-react-app基础上接入react-router、redux-saga

    搭建项目框架 新建项目 执行如下代码,用create-react-app来建立项目的基础框架,然后安装需要用到的依赖. $ npx create-react-app my-test-project $ ...

  2. 自定义微信小程序导航(兼容各种手机)

    详细代码请见github,请点击地址,其中有原生小程序的实现,也有wepy版本的实现 了解小程序默认导航 如上图所示,微信导航分为两部分,第一个部分为statusBarHeight,刘海屏手机(iPh ...

  3. Django学习笔记(4)——Django连接数据库

    前言 在MVC或者MTV设计模式中,模型(M)代表对数据库的操作.那么如何操作数据库呢?本小节就认真学习一下.首先复习一下Django的整个实现流程 ,然后再实现一下使用数据库的整个流程,最后学习一下 ...

  4. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(5)- 语音识别实现(SpeechRecognition, PocketSphinx0.1.15)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之语音识别实现. 语音识别是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...

  5. Mybatis学习(六)————— Spring整合mybatis

    一.Spring整合mybatis思路 非常简单,这里先回顾一下mybatis最基础的根基, mybatis,有两个配置文件 全局配置文件SqlMapConfig.xml(配置数据源,全局变量,加载映 ...

  6. javascript基础修炼(8)——指向FP世界的箭头函数

    一. 箭头函数 箭头函数是ES6语法中加入的新特性,而它也是许多开发者对ES6仅有的了解,每当面试里被问到关于"ES6里添加了哪些新特性?"这种问题的时候,几乎总是会拿箭头函数来应 ...

  7. DSAPI多功能组件编程应用-图形图像篇(中)

    [DSAPI.DLL下载地址]   说到计算机上使用代码来处理各种图像特效,是一份太有挑战性的工作.以下涉及的所有图像效果均不是从网上复制的源码,而是本人试验数次并编写的,所以原理上会和网上的有所不同 ...

  8. demo_2

    业务层 package com.demo.service; import com.demo.pojo.User; public interface IUserService { /** * 用户登录 ...

  9. Java开发笔记(十七)各得其所的多路分支

    前面提到条件语句的标准格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个 ...

  10. Kotlin入门学习笔记

    前言 本文适合人群 有一定的java基础 变量与方法 变量声明及赋值 var 变量名: 变量类型 val 变量名: 变量类型 这里,var表示可以改变的变量,val则是不可改变的变量(第一个赋值之后, ...