分享
 
 
 

JDBC编程基础第一部分

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1. 介绍

许多开发者和用户都在寻找Java程序中访问数据库的便捷方法。由于Java是一个

健壮,安全,

易于使用的,易于理解且可以从网络中自动download ,所以它成为开发数据库应

用的一种良

好的语言基础。它提供了C,C ,Smalltalk, BASIC, COBOL, and 4GLs的许多优

点。许多公司

已经开始在Java与DBMS的连接方面做工作。

许多Java应用开发者都希望能够编写独立于特定DBMS的程序,而我们也相信一个

独立于DBMS的

接口将使得与各种各样DBMS连接变得最为便捷,开发更加迅速。所以我们认为定

义一个通用的

SQL数据库存取框架,在各种各样的提供数据库连接模块上提供统一的界面是十分

有意义的。这

使程序员可以面对单一的数据库界面,使数据库无关的Java工具和产品成为可

能,使得数据库连

接的开发者可以提供各种各样的连接方案。我们看到我们定义一个通用低层的,

支持基本SQL功能

的Java DataBase Connectivity (JDBC)API的紧迫任务。

幸运的是我们不必从头设计一个SQL API。我们可以把我们的工作建立在 X/Open

SQL CLI (调用

层接口)之上(它也是Microsoft's ODBC 的基础)。

我们主要任务是定义一个自然的Java接口来与X/Open CLI中定义的基本的抽象层

和概念连接。

JDBC API得到数据库开发厂商,连接开发厂商,ISV,以及应用开发者的支持是十

分重要的。我们

相信把我们的工作建立在ODBC抽象层的基础上将JDBC更加容易得到大家的接受。

而且从技术上来说,

ODBC是我们设计工作的一个良好基础。

因为ODBC是一个C语言接口,所以ODBC在Java中直接使用不适当。从Java中来调用

C代码在安全性,

健壮性,实现的方便,可移植性等等方面有许多不便。它使得Java在这些方面的

许多优点得不到

发挥。

我们已经在短期里面实现了一个建立在ODBC上的API。长远来看,我们可以通过其

他方式提供实现。

1.1. 注意

我们非常感谢在数据库,数据库连接和数据库工具领域的许多早期的工作者。他

们为JDBC的早期草案

提供了很好的意见和建议。他们的工作对本规范起了不可估量的作用。

2. 目标与哲学

这个部分描述了指引这个API开发的目标以及哲学。

2.1. SQL 级 API

我们的主要目标是为Java定义一个“调用级”(call-level)的SQL接口。着意味着

我们主要的注意力

集中在执行原原本本的SQL语句并且取回结果。我们预计高层的API也将被定义,

这些可能将建立在基

层的接口上。这些高层接口包括象直接地、透明地把表里面的数据影射到Java类

里面,用语法树表示

更加通用的查询,以及Java内嵌的SQL语法。

我们希望大量的应用开发工具将使用我们的API。然而我们也希望程序员能够使用

我们的API,尤其是

目前这样在Java里没有任何其他手段(应该是说数据库访问手段)的情况下。

2.2. 遵循SQL

数据库系统支持各式各样的SQL语法和语义,它们相互之间在比较高级的功能例如

外部连接,内嵌过程

等方面并不一致,尽管我们能够盼望着随时间的推移这些部分的SQL可以获得标准

化。同时我们采取这

样的态度与立场:

In fact, an application query need not even be SQL, or it may be a

specialized

derivative of SQL, e.g. for document or image queries, designed for

specific DBMSs.

In order to pass JDBC compliance tests and to be

called "JDBC COMPLIANT ?" we require that a driver support at least

ANSI SQL-2 Entry

Level. This gives applications that want wide portability a guaranteed

least common

denominator. We believe ANSI SQL-2 Entry Level is reasonably powerful

and is reasonably

widely supported today.

l JDBC允许查询表达式直接传递到底层的数据驱动,这样一个程序可以获得尽量

多的SQL功能,但是可

能被DBMS拒绝。事实上,一个程序的查询甚至可以不是SQL的,或者是SQL的一个

特殊演化,例如:

为专门数据库设计的文本或者图形查询。

l 为了通过JDBC兼容的测试,并且能够被称为JDBC兼容,我们要求一个驱动至少

支持ANSI SQL-2的标

准。这使得那些需要广泛移植性的程序获得一个最小的分母(这句话的原文是:

This gives

applications that want wide portability a guaranteed least common

denominator.)。

我们相信ANSI SQL-2是足够强大的,并且是得到足够支持的。

2.3. JDBC必须可以建立在现有的数据库接口上

我们必须能够保证 JDBC SQL API 能够建立在普通的SQL API上,尤其是ODBC。这

些要求已经对这个

规范的一些部分产生了影响,尤其是对传出参数(OUT parameter)和大数据块的处

理。

2.4. 必须保证这个接口与JAVA系统的其他部分保持一致

目前对JAVA的积极回应已经十分热烈。很大程度上是由于这个语言标准以及标准

运行时库被认为是一

致,简单和强大的。我们将尽我们所能,提供这个Java数据库接口,这个接口将

建立在Java内核现有

的这种风格,并且将进一步加强它。

2.5. 保持简单

We would prefer to keep this base API as simple as possible, at least

initially. In

general we would prefer to provide a single mechanism for performing a

particular task,

and avoid provid-ing duplicate mechanisms. We will extend the API later

if any

important functionality is miss-ing.

我们将力争使得基本的API尽量简单,至少开始的时候是这样的。一般来说,我们

希望对实现每个特定

的任务只提供一种方案,而避免提供多种方案。如果一些重要的功能遗漏了,那

么我们在晚些时候将扩

充这个API。

2.6. 尽量保持强的、静态的类型

我们希望这个JDBC API保持尽量强的类型检查,使得尽可能多的类型信息可以静

态地表达。着使得尽

可能多的错误可以在编译的时候被发现。

由于SQL本身是动态类型的,所以我们可能会在程序运行的时候遇到类型不能匹配

的问题。例如:

当一个程序员在希望SELECT返回一个整数,但是实际返回的是一个字符串

“foo”.但是我们依然希望

程序员把他们所希望的类型在编译的时候就能够表达清楚,这样我们可以做尽可

能多的静态检查。

我们也希望在必要的时候能够支持动态类型接口(见第四章)

2.7. 使普通任务简化

我们希望普通的任务能够是简单的,而不一般的工作是可行的。

一个普通任务是指一个程序员执行一个简单的没有参数的SQL语句(例

如:SELECT,INSERT,UPDATE,DELETE),

然后(例如SELECT)处理返回的具有简单类型的元组。一个具有传入参数(IN

parameter)的SQL语句

也是普通的。不那么普通但是也是十分重要的情形是当程序员使用有INOUT,OUT参

数的SQL语句。我们

也需要支持读写几兆字节对象的SQL语句,更特别一些的情形包括一个语句返回了

多个结果集合。

我们希望元数据(Meatdata)的使用很少的,只是那些熟练的程序员以及开发工具

才需要处理的问题。元

数据存取函数以及动态类型数据存取函数在这个文档末尾,一般的程序员可以不

必关心这些章节。

2.8. 不同的功能让不同的方法(函数)来实现

(“方法”的原文是:method,这样翻译是跟VB的)一种界面设计风格是使用很

少的过程,提供许多作

为参数传递的控制标志,这样它们可以用来影响很大一个范围内的各种行为。来

表达不同的功能。这

趋向与使用很多的方法,但是每个方法都比较同意理解。

一般来说,Java内核类使用不同的方法(method)。这个步骤的主要优点是开始

学习基本界面的程序

员可以不必被那些与复杂功能相关的参数所困扰。我们力图在JDBC接口上也采用

相同的策略。一般来

说采用不同的方法而不是采用不同的标志和多用途的方法。

3. 接口概貌

接口分为两个层次,一个是面向程序开发人员的JDBC API。另外一个是底层的

JDBC Driver API。

3.1. JDBC API

JDBC API 被描述成为彝族抽象的Java接口,似的应用程序远可以对某个数据库打

开连接,执行SQL

语句并且处理结果。错误! 嵌入对象无效。

最重要的接口是:

l java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支

持。

l java.sql.Connection 代表对特定数据库的连接。

l java.sql.Statement

代表一个特定的容器,来对一个特定的数据库执行SQL

语句。

l java.sql.ResultSet

控制对一个特定语句的行数据的存取。其中

java.sql.Statement

又有两

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有