JDBC

背景:1996年,Sun公司推出了Java数据库连接(Java Database Connectivity JDBC)工具包的第一个版本.该工具包使得程序员可以使用结构化语言SQL连接到一个数据库,对数据库进行操作 JDBC是Java程序连接和存取数据库的应用程序借口API ,是Java核心API的一部分.

13.1 JDBC的结构

13.1.1 JDBC数据库应用模型

JDBC是由两层组成,上面一层是JDBC API,下面一层是JDBC驱动程序API

1:Java应用程序

Java程序包括应用程序.Applet和Servlet,这些类型的程序都可以利用JDBC方法完成对数据库的访问和操作.其完成的主要任务有:请求与数据库建立连接,向数据库发送SQl请求,为结果集定义存储应用和数据类型,查询结果,处理错误,提交及关闭等操作.

2 JDBC驱动程序管理器

JDBC驱动程序管理器能够动态地管理和维护数据库查询所需要的所有厂商或第三方所提供的驱动程序对象,实现Java任务与特定的驱动程序的连接,从而体现JDBC与平台无关的这一特点.他完成的主要任务有:为特定的数据库选择驱动程序,处理JDBC初始化调用,为每一个驱动程序提供JDBC功能的入口,为JDBC调用执行参数等

3:驱动程序:

一般由数据库厂商或第三方提供,JDBC是独立于DBMS 的.

4:数据库

这里的数据库是指Java程序需要的数据库以及数据库管理系统

13.2 通过JDBC访问数据库

13.2.1 基本流程

1:建立ODBC数据源

2:装入JDBC驱动程序

为了要连接到数据库,必须要有相应数据库的JDBC驱动程序,并将驱动程序的.jar文件加入到Classpath的设置中.此后再在程序中通过DriverManager类加载JDBC驱动类

DriverManager类管理各种数据库驱动程序,建立新的数据库连接,以便Java应用程序能够使用正确的JDBC驱动

3:建立连接

与数据库建立连接的标准方法时调用方法

DriverManger.getConnection(String url,String user,String password)

4:执行SQL语句

连接一旦建立,就可用来向它所涉及的数据库传送SQL语句.JDBC 提供了三个类,用于向数据库发送SQL语句.Connection接口中的三个方法可用于创建这些类的实例.

1:Statement 由方法createStatement所创建.Statement对象用于发送简单的SQL语句.

2:PreparedStatement,由方法prepareStatement所创建.PreparedStatement对象用于发送带有一个或多个输入参数的SQL语句.PrepareStatemt拥有一组方法,用于设置输入参数的值.执行语句时,这些参数将被送到数据库中. PreparedStatement 对象扩展了Statement,因此他们都包含了Statement的方法. PreparedStatement的效率更高,因为它已经被预编译过并放在那里以供将来使用

5:检索结果

SQL语句发送以后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet对象可以看做一个表,这个表包含由SQL返回的列名和相应的值,ResultSet类的对象中维持了一个指向当前行的指针,通过一系列的get***方法,可以检索当前行的各个列,并显示出来.

6:关闭连接

在对象使用完毕后,应当使用close()方法解除与数据库的连接,并关闭数据库

13.2.2常用的JDBC API

Java.sql包中的主要类和接口

类或接口名称

说明

Java.sql.CallableStatement

用于执行SQL存储过程

Java.sql. Connection

表示与一个特定数据库的会话.在一个Connection的上下文中,执行SQL语句并返回结果

Java.sql.DataTruncation

截断一个数据的值产生的异常

Java.sql.Date

对日期的处理类

Java.sql.Driver

数据库驱动程序类

Java.sql.DriverManager

提供管理JDBC驱动器设置的基本服务

Java.sql.DriverPropertyInfo

程序员与驱动器交互的类,以发现和提供链接特性

Java.sql.PreparedStement

用于有效次地多次执行编译的SQL语句

Java.sql.ResultSet

提供了通过执行一条语句访问所生成的数据表的功能

Java.sql.SQLException

提供了关于数据库访问错误的信息

Java.sql.Statement

用于执行一条静态的SQL语句并获取它产生的结果

Java.sql.Time

处理时间

.

1:DriverManager类

该类是JDBC的管理类,负责管理JDBC驱动程序,跟踪可用的驱动程序并在数据库中和相应的驱动程序之间建立连接.如果要使用JDBC驱动程序,必须加载JDBC驱动程序并向DriverManager注册之后才能使用.加载和注册驱动程序可以使用Class.forName()这个方法来完成.该类的主要方法有:

public static synchronized Connection getConnection(String url) throws SQLException  这个方法的作用是使用指定的数据库URL创建一个连接,使DriverManager从注册的JDBC驱动中选择一个适当的驱动程序

public static synchronized getConnection(String url, Properties infor) throws SQLException方法,相比上一个多了一个infor参数用于存储用户名,用户密码等信息.

public static synchronized getConnection(String url, String user, String password) throws SQLException  它使用指定的数据库URL,用户名,密码创建一个连接

public static synchronized getDriver(String url,) throws SQLException 它定位在给定的URL下的驱动程序

public static void deregisterDriver(Driver driver) throws SQLException 这个方法是从DriverManaber类表中删除指定的驱动的程序

public static int getLoginTimeout() 它用来获取链接数据库时驱动程序可以等待的最大的时间,以秒为单位

public static PrintStream getLogStream() 它用来获取DriverManager和所有驱动程序使用的日志PrintStream

2:Connection类

该类负责建立与指定数据库的连接 其主要方法有

Public Statement createStatement() throws SQLException方法,用来创建Statement类的对象

Public StatementcreateStatement(int resultSetType, int resultSetConcurrency) throws SQLException,用来指定的参数创建Statement类的对象

Public PreparedStatement prepareStatement(String sql) throws SQLException ,用来创建PreparedStatement对象.

Public CallableStatement prepareCall(String sql) throws SQLException 用来创建CallableStatement类对象,执行存储过程.

Public void commit throws SQLException 用来提交对数据库执行添加,删除或修改记录的操作

Public Boolean getAutoCommit(Boolean autoCommit) throws SQLException 用来设置Connection类对象的Auto_Commit自动提交的状态,若设置为true,则它的每个SQL语句将作为袷单独的事务被执行和提交

Public void rollback() throws SQLException 用来取消对数据库执行过的添加,删除,修改记录等操作,将数据库恢复到执行这些操作前的状态

Public void close() throws SQLException 用于断开Connection对象与数据库的连接

Public Boolean isClosed() throws SQLException 用来测试是否已经关闭连接了

3:Statement类

该类的主要功能是将SQL命令传送给数据库,并将SQL命令的执行结果返回.Statement类提供的常用方法如下

Public ResultSet executeQuery(String sql) throws SQLException 方法用来执行自动的SQL查询语句,返回查询结果

Public int executeUPdate(String sql) throws SQLException 用来执行SQL的插入 更新 删除 语句,返回值是插入 修改 或删除的记录数 或者是0

Public Boolean execute(String sql) throws SQLException 如果执行结果为一个结果集对象,则返回true,否则返回false

Public ResultSet getResultSet() throws SQLException  用于获取ResultSet对象当前的结果集.对于每一个结果只鞥调用一此

Public int getUpdateCount() throws SQLException 用于获取当前结果的更新的记录数,如果结果集是一个ResultSet对象或没有更多的结果,则返回-1.对于每一个结果只调用一次

Public void close() throws SQLException 用户释放Statement对象的数据库和JDBC资源.

4:PreparedStatement 类

该类对象可以代表一个与编译的SQL语句,它是Statement 接口中的子接口.效率高

5:ResultSet类

表示从数据库中返回的结果集,当使用Statement 和PreparedStatement 类提供的executeQuery()方法来下达Selet命令以查询数据库时,方法将会把数据库响应查询的数据放在ResultSet类对象中供用户使用 常用的方法如下

Public Boolean avsolute(int row) throws SQLException 方法,用来移动指针到指定记录

Public boolean first() throws SQLException 方法,用来移动记录指针到第一个记录

Public boolean last() throws SQLException 方法,用来移动记录指针到最后一个记录

Public void afterLast() throws SQLException 方法,用来移动记录指针到最后一个记录之后

Public boolean previous() throws SQLException 方法,用来移动记录指针到上一个记录

        Public boolean next() throws SQLException 方法,用来移动记录指针到下一个记录

        Public void insertRow() throws SQLException,用来插入一个记录到数据表中

        Public void updateRow() throws SQLException,用来修改数据表中的一个记录

        Public void deleteRow() throws SQLException,用来删除记录指针指向记录

12.2.3 事务

事务是由一个或者多个这样的语句组成:这些语句已被执行,完成并被提交或还原.当调用方法commit或rollback时,当前事务结束,另一个事务开始

JDBC相关的类介绍的更多相关文章

  1. JDBC常用接口、类介绍

    JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connectio ...

  2. Spring4相关jar包介绍(转)

    Spring4相关jar包介绍 spring-core.jar(必须):这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当 ...

  3. spring学习二:jdbc相关回顾以及spring下dao

    目录: Part一:回顾java web部分的jdbc.事务.连接池和dbutils工具等 : Part二:spring的JdbcTemplate使用: Part三:spring的事务处理: Part ...

  4. 模拟在内存中的数据库DataSet相关的类

    这篇连着上一篇DataReader相关类. 下面两段话是在msdn官网摘下来:       .NET Framework 数据提供程序是专门为数据操作以及快速.只进.只读访问数据而设计的组件.Conn ...

  5. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  6. shiro中CacheManager相关的类结构介绍,提供redis Cache实现

    cacheManager主要用于对shiro中的session.realm中的认证信息.授权信息进行缓存. 1.类结构 2.接口及类介绍 CacheManager 提供根据名字获取cache的作用. ...

  7. 使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍

    使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍 Photon PUN Unity 网络游戏开发 Photon常用类介绍: IPunCallback PUNGIPunCa ...

  8. IO流分类详细介绍和各种字节流类介绍与使用 过滤流 字节流

    Java基础笔记 – IO流分类详细介绍和各种字节流类介绍与使用 过滤流 字节流本文由 arthinking 发表于627 天前 ⁄ Java基础 ⁄ 评论数 1 ⁄ 被围观 2,036 views+ ...

  9. Spring源码分析(1)容器的基本实现——核心类介绍

    bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义. public class MyTestB ...

随机推荐

  1. ios-将代码创建的视图控件放入拖拽控件的下面

    如图所示 图片是拖拽上去的imageView,橘黄色控件是在代码中创建的添加上去的,此时黄色view在imageView 上方 调用方法bringSubviewToFront:试图将imageView ...

  2. python web框架之django环境搭建

    一.django环境搭建 https://www.djangoproject.com/download/ 下载适合自己的版本,在右边有压缩包版本的,也可以到git上去拽.我用的python27,下载的 ...

  3. FreeBSD network connect

    在安装FreeBSD的过程中,网络设置部分我将其设置为DHCP,在此期间,下载了en_us_freebsd_hanbook.txzen_us_freebsd_hanbook.txz,zh_cn_fre ...

  4. Access restriction: The type QName is not accessible due to restriction on required library

    There's another solution that also works. I found it on this forum: Go to the Build Path settings in ...

  5. Python爬虫爬取百度贴吧的帖子

    同样是参考网上教程,编写爬取贴吧帖子的内容,同时把爬取的帖子保存到本地文档: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urlli ...

  6. hdu 1556

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. c++加法高精度算法

    c++高精度算法,对于新手来说还是一大挑战,只要克服它,你就开启了编程的新篇章,算法. 我发的这个代码并不是很好,占用内存很多而且运行时间很长(不超过1秒),但是很好理解,很适合新手 高精算法的本质就 ...

  8. 5-Zend Studio配置

    0-将文件编码设置成utf-8 Window>Preferences>General>Content Types>Text Default encoding:utf-8 1-Z ...

  9. rqt工具的使用

    安装rqt工具sudo apt-get install ros-indigo-rqtsudo apt-get install ros-indigo-rqt-common-plugins或者rosdep ...

  10. infoq - neo4j graph db

    My name is Charles Humble and I am here at QCon New York 2014 with Ian Robinson. Ian, can you introd ...