JDBC数据库1
数据库(Database)是按照数据结构来组织,存储,和管理数据的仓库。数据库有很多类型,从简单存储各种数据的的表格到能够储存大型数据的系统,在各方面得到了广泛的应用。
数据库简介
J.Martin给 数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用程序服务;数据的存储独立于使用它的
程序;对数据库插入新数据,修改和检索原有的数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
数据库中数据的性质
1:数据整体性
数据库是一个单位或一个应用领域的通用数据处理系统,它储存的是是属于企业或事业部门,团体和个人的有关的数据集合,数据库中的数据是从全局观点出发建立的,它按一定的数据模型
进行组织、描述和储存。其结构基于数据间的自然联系,从而提供一切必要的存取路径,且数据不在针对某一应用,而是面向全组织,具有整体的结构化特征。
2:数据共享性
数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即
不同用户可以同时存取数据库中的同一数据。数据共享性不仅满足了各用户对信息内容的要求,同时满足了各用户之间通信的要求。
数据库的特点
1:实现数据共享
数据共享包含所有用户可以同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
2:减少数据的冗余度
同文件系统比较,由于数据库实现数据共享,从而避免了用户各自建立应用文件,减少了大量重复数据,减少了数据的冗余,维护了数据的一致性。
3:数据的独立性
数据的独立性包括数据库中的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
4:数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同用户或同一用户在不同处理中其文件之间毫无关系。利用数据库中可对书库进行集中管理和控制,并通过数据模型表示各种数据的组织及数
据间的关系。
5:数据一致性和可维护性,以确保数据的安全性和可靠性。
安全控制性:以防止数据丢失、错误更新和越权使用。
完整性控制:保证数据的准确性、有效性和相容性。
并发控制:在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用,
故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。
6:故障恢复
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统尽快恢复数据库系统运行时出现的故障,可能是物理上或逻辑上的错误。例如,对系统的错
误操作造成的数据错误等。
JDBC概述
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/
数据开发人员提供了一个标准的API,据此可以构建更加高级的工具和接口,使数据库开发人员可以用纯JavaAPI编写数据库应用程序。
有了JDBC,向各种关系发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问MySQL数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问SQLServer又编写另一个程序,等等,程序员只需用JDBC API写一个程序就够了,它可向相应的数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只需写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势,为Java应用程序和各种不同的数据库之间进行对话提供了一种便捷的方法,使得开发人员能够用纯Java API编写具有跨平台性的数据库应用程序。
JDBC介绍
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接服务的提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其他数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且简单、严格类型定义高性能实现的接口。
Java具有坚固,安全,易于使用,易于理解和可以从网络上自动下载等特性,是编写数据库应用程序的杰出语言。它需要的只是Java应用程序与各种不同类型的数据库之间进行对话的方法,而JDBC正式作为此种用途的机制。
JDBC扩展了Java的功能,例如,用Java和JDBC API 可以发布含有Applet的网页而该Applet使用的信息可以来自远程数据库。企业也可以用JDBC通过Internet将所有员工连接到一个或多个内部数据库中(及时这些职员所使用的计算机有Windows、Macintosh和UNIX等各种不同的操作系统)。随着越来越多的程序也能开始使用Java编程语言,对从Java中便捷的访问数据库的要求也日益增加。
通过使用JDBC开发人员可以很方便的将SQL语句传送给几乎任何一种数据库,应用程序通过调用JDBC来操作数据库的过程,其实是数据库厂商提供JDBC驱动程序来负责的。如果要更换数据库,只要更改驱动程序,并在JDBC中载入新的驱动程序来源,即可完成数据库系统的变更。JDBC的主要功能如下:
建立与数据库或其他数据源的连接。
向数据库发送SQL命令。
处理数据库的返回结果。
JDBC的四种驱动程序
为了与某个数据库连接,必须有适合该数据库的驱动程序。JDBC驱动程序主要有以下的4种基本类型。
1:JDBC-ODBC桥加ODBC驱动程序
JDBC-ODBC桥产品经由ODBC驱动程序供JDBC访问数据库,广泛地应用于连接各种环境中的数据库。JDBC-ODBC桥加ODBC驱动程序实际上是把所有JDBC的调用传递给ODBC,再由ODBC调用本地数据库驱动代码。注意,必须将ODBC二进制代码(许多情况下还包括本地数据库客户机代码)加载到使用该驱动程序的每个用户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。它主要有以下三个特点:
提供连接几乎所有平台上的所有数据库能力
可能是访问低端桌面数据库(如Access)和应用的程序的唯一方式。
操作简单,适合于初学者学习。
缺点为:ODBC驱动程序需要安装并加载到目标机器上。
2:本地API和部分Java编写的驱动程序
这种类型的驱动程序是把客户机上API上的JDBC调用转换为对数据库的调用。这种类型的驱动程序要比采用类型1方式的速度快很多,但它仍然存在一些缺点:需要再目标机器上安装本地代码。
JDBC所依赖的本地接口在不同的java虚拟机供应商及不同的操作系统上是不同的。
3:JDBC网络纯Java驱动程序
这种驱动程序将JDBC 转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上,所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序,有可能所有这种解决方案的提供者 提供适合于Internet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。它主要有以下特点:
不需要客户机上有任何本地代码
不需要客户安装任何程序
大部分功能实现都在服务器端,所以这种驱动可以设计的很小,可以快速加载到内存中
缺点为:中间层仍然需要配置其他数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好。
4:本地协议纯Java驱动程序
该类型的驱动程序中包含了特定的数据库的访问协议,使得客户端可以直接和数据库进行通信,这种方式的驱动程序有以下优点:
效率高,速度快。
驱动程序可以动态的被下载。
缺点为:对于不同的数据库需要下载不同的驱动程序。
JDBC对B/S和C/S模式的支持
JDBC API既支持数据库访问的两层模式(C/S),同时也支持三层模式(B/S)。在两层模型中,Java applet或应用程序将直接与数据库进行对话。这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行通信。用户的SQL语句被送往数据库中,而其结果将被送回客户。数据库可以位于另一台计算机上,用户通过网络连接到上面。这就叫用户机/服务器配置,其中用户的计算机为客户机,提供数据库的计算机为服务器。网络可以使Intranet(它可将公司职员连接起来),也可以是Internet。
在三层模型中,命令先是被发送到服务的“中间层”,然后由它将SQL语句发送给数据库。数据库对SQL语句进行处理并将结构送回到中间层,中间层再将结果送回给用户。MIS主管们都发现三层模型很吸引人,因为可用中间层来控制对公司数据的访问和可进行根性的种类。中间层还有另一个好处就是,用户可以利用易于使用的高级API,而中间层将把它转换为相应的低级调用。最后,许多情况下三层结构可提供一些性能上的好处。
到目前为止,中间层通常都用C或C++这类语言编写,这些语言执行速度较快。然而,随着最优化编译器(它把Java字节代码转换为高效的特定机器的代码)的引入,用Java来实现中间层将变得越来越实际。这将是一个很大的进步,它是人们可以充分利用Java的诸多优点(如坚固、多线程和安全等等特征)。JDBC对于从Java的中间层来访问数据库非常重要。
Java.sql包
java.sql包中定义了很多接口和类,但是经常使用的却不是很多。在这里介绍几种常用的接口和类。
1:加载驱动程序接口:Driver
java.sql.Driver是所有JDBC的=驱动程序必须实现的接口。
2:管理驱动程序类:DriverManager
DriverManager类是JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和驱动程序之间建立连接。当DriverManager激发getConnection()方法时,DriverManager类首先从它已加载的驱动池中找到一个可以接受该数据URL的驱动程序,然后请求该驱动程序使用相关的数据库URL连接到数据库中。getConnection()方法建立了与数据库的连接。
3:数据库连接接口:Connection
Connection对象代表与数据库连接,也就是在已经加载的Driver和数据库之间建立连接,必须创建一个Connection class的实例,其中包括数据库信息。
连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。DriverManager的getConnection()方法将建立在JDBC URL中定义的数据库的Connection连接上,代码如下:
Connection con=DriverManager.getConnection(url, login,password);
4:SQL声明接口Statement
java.sql.Statement提供在基层连接上运行SWL语句,并且访问结果。Connection接口提供生成Statement的方法。在一般情况下,我们通过connection.createStatement()方法就可以得到Statemenet的实例。Statement提供了很多方法,最常用的方法如下:
execute()运行语句,返回是否有结果集。
executeQuery()运行查询语句,返回ReaultSet对象。
executeUpdate()运行更新操作,返回更新的行数。
addBatch()增加批处理语句。
executeBatch()执行批处理语句
clearBatch()清除批处理语句
JDBC数据库1的更多相关文章
- activemq 5.13.2 jdbc 数据库持久化 异常 找不到驱动程序
原文:https://my.oschina.net/u/2284972/blog/662033 摘要: activemq jdbc 数据库持久化 异常 找不到驱动程序 Caused by: java. ...
- Spring——JDBC——数据库
1.Spring 的数据访问哲学 数据访问的功能放到一个或者多个专注于此项任务的组件.这样的组件通常称为数据访问对象(data access object)DAO或者Repository. 为了避免应 ...
- Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库
废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...
- Java JDBC 数据库链接小结随笔
Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement 和 PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...
- [总结] JDBC数据库操作
1.加载驱动--告诉驱动管理将使用哪一个数据库的驱动包. class.forName("com.mysql.jdbc.Driver"); 2.操作JDBC ADI完成数据库动作 D ...
- MySql连接JDBC数据库------借鉴的红客联盟的
首先安装MySQL数据库,我安装的是MySQL5.5,具体安装步骤这里就不介绍了.需要提醒的是,如果安装进程一直停在start service那里,无法继续进行下去的话,请参照我的博文<安装My ...
- java jdbc数据库操作
package shb.java.demo3; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQ ...
- web/jdbc数据库带实例名连接2008
--------------------------数据库带实例名连接2008-------------------------------------<property name=" ...
- Java学习笔记--JDBC数据库的使用
参考 hu_shengyang的专栏 : http://blog.csdn.net/hu_shengyang/article/details/6290029 一. JDBC API中提供的常用数据库 ...
随机推荐
- [译]:Orchard入门——部件管理
原文链接:Managing Widgets 在Orchard中,部件是可以加入到当前当前主题任何位置或区域(如侧栏sidebar或底部区域footer)的UI块(如:HTML)或代码部分(如:内容部分 ...
- zoj 3820(2014牡丹江现场赛B题)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374 思路:题目的意思是求树上的两点,使得树上其余的点到其中一个点的 ...
- 简单的后台json,前台解析 操作
后台: List<PageData> KeyWords=plantDefDetailCSAService.findKeyWords(pd); JSONArray array = new J ...
- sprintf溢出的bug
向printf.sprintf这种函数在编译时很难检查错误,所以程序员必须小心.比如我就遇到了这样的bug: void test() { ]; sprintf(t,"); } //执行spr ...
- 洛谷 P2725 邮票 Stamps Label:DP
题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描述 例如,假设有 1 分和 3 ...
- NOIP2012拓展欧几里得
拉板题,,,不说话 我之前是不是说过数据结构很烦,,,我想收回,,,今天开始的数论还要恶心,一早上听得头都晕了 先来一发欧几里得拓展裸 #include <cstdio> void gcd ...
- Python In Action:二、 最小的GUI程序:麻雀虽小,五脏俱全
Python in Action第二个例子,倒是很简单,却是最基本的GUI程序框架,里面有最基本的实现GUI流程 import wx class MyApp(wx.App): def OnInit(s ...
- union
union是C++中一个类,平时自己用的比较少,了解了一些特性后觉得在内存要求比较高的地方还是大有可为,总结一下. C++中的struct和union内部都可以定义 数据 和 函数, 两个跟 clas ...
- 那些年一起用过的iOS开发利器之Code Pilot
本系列所有工具的简介见:http://www.cnblogs.com/lloydsheng/p/3637606.html 什么是Code Pilot? Code Pilot是一个Xcode的扩充套件, ...
- WPF整理-为User Control添加依赖属性
依赖属性 ".NET properties are nothing more than syntactic sugar over set and get methods." 我们知 ...