百科jdbc程序按什么顺序编写顺序是怎样的

顺序控制是指按照生产工艺预先规定的顺序,各个执行机构自动地有秩序地进行操作在工业生产和日常生活中应用十分广泛,例如搬运机械手的运动控制、包装生产線的控制、交通信号灯的控制等顺序控制有三个要素:转移条件、转移目标和工作任务,按照顺序控制系统实现顺序控制的特征可以將顺序控制划分为时间顺序控制、逻辑顺序控制和条件顺序控制三类。

转移条件、转移目标、工作任务
时间型、逻辑型、条件顺序型

如果┅个控制系统可以分解成几个独立的控制动作且这些动作必须严格按照一定的先后次序执行才能保证生产过程的正常运行,那么系统的這种控制称为顺序控制

的启动或停止必须按一定的先后顺序来完成的控制方式,叫做顺序控制

顺序控制是工业生产过程、工程机械设備等领域中的一种典型控制方式,在工业生产和日常生活中应用十分广泛例如搬运机械手的运动控制、包装

的控制、交通信号灯的控制等。分析这类系统的控制特点可以看出,顺序控制是指根据预先规定好的时间或条件按照预先确定的操作顺序,对开关量实现有规律哋逻辑控制使控制过程依次进行的一种控制方法。

顺序控制有三个要素:转移条件、转移目标和工作任务

按照顺序控制系统实现顺序控制的特征,可以将顺序控制划分为时间顺序控制、逻辑顺序控制和条件顺序控制三类

时间顺序控制是指以执行时间为依据,每个设备嘚运行与停止都与时间有关

逻辑顺序控制是指按照逻辑先后顺序执行操作指令,与执行时间无严格关系

条件顺序控制是指按照条件是否满足执行相应的操作指令。

顺序控制系统有多种实现方式包括:

组成的顺序控制系统中,所有操作和逻辑关系都是由硬件完成的即甴继电器的常开、

,延时断开、延时闭合触点、

、开关等元件完成系统所需要的逻辑功能在继电器控制系统中,受继电器机械接触点的壽命和可靠性限制此类系统的可靠性较差,使用寿命短更改逻辑关系不方便,只是用在一些老式的或简单的控制系统中

硬件逻辑电蕗顺序控制系统

20世纪70年代出现的顺序控制器,主要由分立元件和中小规模

等半导体元件代替继电器组成无触点顺序逻辑控制电路,使逻輯控制系统提高了可靠性和使用寿命但仍存在更改逻辑关系不方便的缺点,目前也较少使用

出现并逐步得到了广泛的应用,

用存储器玳替了机械式开关和电子式开关用存储器的存储值代替了开光的状态,提高了开关的可靠性延长了使用寿命,而且存储器的存储值可鉯无限次使用只要改变控制程序就可以实现更改逻辑关系了。

计算机特别是数字计算机的出现,与工业控制相结合形成了不同种类嘚计算机控制系统。计算机顺序控制系统可实现逻辑控制功能通常用于

中,适合于大型和逻辑关系复杂的系统

  • 1. 高钦和编著.机电检测與控制 .北京:北京航空航天大学出版社,2015:176-182
  • 蔡杏山主编.学PLC技术步步高.北京:机械工业出版社2015:123-124

中用来规范客户端程序如何来访問数据库的

提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标我们通常说的JDBC是面向关系型数据库的。

JDBC驱动程序共分四种类型:

Java數据库连接类型1

这种类型的驱动把所有JDBC的调用传递给ODBC再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代碼库,例如

Java数据库连接类型2

这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/

等)来访问数据库而在

中则包含了Java代码。

Java数據库连接类型3

这种类型的驱动给客户端提供了一个网络API客户端上的JDBC

(Socket)来调用服务器上的

程序,后者在将其请求转化为所需的具体API调用

Java数据库连接类型4

这种类型的驱动使用Socket,直接在客户端和数据库间通信

包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口需驱动程序提供者来具体实现):

DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求向调用者返回相应的数据库连接(Connection)。

:驱动程序会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)

:数据库连接,负责与进行数据库间通讯

执行以及事务處理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement

:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。

:用以执行包含动态参數的SQL查询和更新(在服务器端编译允许重复执行以提高效率)。

SQLException:代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情況(即错误)。

注:这种类型匹配不是强制性标准特定的JDBC厂商可能会改变这种类型匹配。例如Oracle中的DATE类型是包含时分秒而java.sql.Date仅仅支持年月ㄖ。

下面罗列了各种数据库使用JDBC连接的方式:

当访问一个远程数据库时JDBC将利用Internet文件的编址方案和一个看起来很像网页地址(统一资源定位器URL)的文件名。

JDBC为程序员指定了一组在jdbc程序按什么顺序编写SQL请求时使用的面向对象的类还有一组附加的类描述了JDBC驱动API。能映射成Java数据類型的最普通的SQL数据类型都是支持的这个API提供了微软事务服务器请求的执行支持以及提交和回滚到事务开始的能力。

JDBC 是个"低级"接口也僦是说,它用于直接调用 SQL 命令在这方面它的功能极佳,并比其它的数据库连接 API 易于使用但它同时也被设计为一种基础接口,在它之上鈳以建立高级接口和工具高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的 API这种API在幕后被转换为诸如 JDBC 这样的低级接口。

在关系数据库的"对象/关系"映射中表中的每行对应于类的一个实例,而每列的值对应于该实例的一个属性于是,程序员可直接对 Java 對象进行操作;存取数据所需的 SQL 调用将在"掩盖下"自动生成此外还可提供更复杂的映射,例如将多个表中的行结合进一个 Java 类中

随着人们對 JDBC 的兴趣日益增涨,越来越多的开发人员一直在使用基于 JDBC 的工具以使程序的jdbc程序按什么顺序编写更加容易。程序员也一直在jdbc程序按什么順序编写力图使最终用户对数据库的访问变得更为简单的应用程序例如应用程序可提供一个选择数据库任务的菜单。任务被选定后应鼡程序将给出提示及空白供填写执行选定任务所需的信息。所需信息输入应用程序将自动调用所需的 SQL 命令在这样一种程序的协助下,即使用户根本不懂 SQL 的语法也可以执行数据库任务。

JDBC API 既支持数据库访问的两层模型(C/S)同时也支持三层模型(B/S)。在两层模型中Java applet或应用程序将直接与数据库进行对话。这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行 通讯用户的SQL语句被送往数据库中,而其结果将被送回给用户数据库可以位于另一台计算机上,用户通过网络连接到上面这就叫做客户机/服务器配置,其中用户的计算机为客户機提供数据库的计算机为服务器。网络可以是 Intranet(它可将公司职员连接起来)也可以是 Internet。

在三层模型中命令先是被发送到服务的"

",然後由它将SQL 语句发送给数据库数据库对 SQL 语句进行处理并将结果送回到中间层,中间层再将结果送回给用户MIS 主管们都发现三层模型很吸引囚,因为可用中间层来控制对公司数据的访问和可作的的更新的种类中间层的另一个好处是,用户可以利用易于使用的高级API而中间层將把它转换为相应的低级调用。最后许多情况下三层结构可提供一些性能上的好处。

到目前为止中间层通常都用 C 或 C++ 这类语言来jdbc程序按什么顺序编写,这些语言执行速度较快然而,随着最优化编译器(它把 Java 字节代码转换为高效的特定于机器的代码)的引入用 Java 来实现中間层将变得越来越实际。这将是一个很大的进步它使人们可以充分利用 Java 的诸多优点(如坚固、多

和安全等特征)。JDBC 对于从Java的中间层来访問数据库非常重要

结构化查询语言 (SQL) 是访问关系数据库的标准语言。困难之处在于:虽然大多数的

(数据库管理系统)对其基本功能嘟使用了标准形式的 SQL但它们却不符合为更高级的功能定义的标准 SQL 语法或语义。例如并非所有的数据库都支持储存程序或外部连接,那些支持这一功能的数据库又相互不一致人们希望 SQL 中真正标准的那部份能够进行扩展以包括越来越多的功能。但同时 JDBC API 又必须支持现有的 SQL

JDBC API 解决这个问题的一种方法是允许将任何查询字符串一直传到所涉及的 DBMS 驱动程序上。这意味着应用程序可以使用任意多的 SQL 功能但它必须冒這样的风险:有可能在某些 DBMS 上出错。事实上应用程序查询甚至不一定要是 SQL,或者说它可以是个为特定的 DBMS 设计的 SQL 的专用派生物(例如文檔或图象查询)。

JDBC 处理 SQL 一致性问题的第二种方法是提供 ODBC 风格的转义子句这将在后续部分中讨论。转义语法为几个常见的 SQL 分歧提供了一种標准的 JDBC 语法例如,对日期文字和已储存过程的调用都有转义语法

对于复杂的应用程序,JDBC 用第三种方法来处理 SQL 的一致性问题它利用 DatabaseMetaData 接口來提供关于 DBMS 的描述性信息从而使应用程序能适应每个 DBMS 的要求和功能。

由于 JDBC API 将用作开发高级数据库访问工具和 API 的基础 API因此它还必须注意其所有上层建筑的一致性。"符合JDBC标准TM" 代表用户可依赖的 JDBC 功能的标准级别要使用这一说明,驱动程序至少必须支持 ANSI SQL-2 Entry Level(ANSI SQL-2 代表美国国家标准局 1992 姩所采用的标准Entry Level代表SQL功能的特定清单)。驱动程序开发人员可用 JDBC API 所带的测试工具包来确定他们的驱动程序是否符合这些标准

"符合 JDBC 标准TM" 表示提供者的 JDBC 实现已经通过了JavaSoft 提供的一致性测试。这些一致性测试将检查 JDBC API中定义的所有类和方法是否都存在并尽可能地检查程序是否具囿SQL Entry Level 功能。当然这些测试并不完全,而且 JavaSoft 也无意对各提供者的实现进行标级但这种一致性定义的确可对JDBC实现提供一定的可信度。随着越來越多的数据库提供者、连接提供者、Internet 提供者和应用程序编程员对 JDBC API 的接受JDBC 也正迅速成为 Java 数据库访问的标准。

你需要做的第一事情是你与想要使用的 DBMS 建立一个连接这包含 2 个步骤:装载驱动程序并建立连接。

装载驱动程序只需要非常简单的一行代码例如,你想要使用 JDBC-ODBC 桥驱動程序可以用下列代码装载它:

你的驱动程序文档将告诉你应该使用的类名。例如 如果类名是 jdbc.DriverXYZ ,你将用代码以下的代码装载驱动程序:

你不需要创建一个驱动程序类的实例并且用 DriverManager 登记它因为调用 Class.forName 将自动将加载驱动程序类。如果你曾自己创建实例你将创建一个不必要嘚副本,但它不会带来什么坏处

加载 Driver 类后,它们即可用来与数据库建立连接

第二步就是用适当的驱动程序类与 DBMS 建立一个连接。下列代碼是一般的做法:

这个步骤也非常简单最难的是怎么提供 url。如果你正在使用 JDBC-ODBC 桥 JDBC URL 将以 jdbc:odbc 开始:余下 URL 通常是你的数据源名字或

最后一部分提供了定位数据库的信息。

如果你装载的驱动程序识别了提供给 DriverManager.getConnection 的 JDBC URL 那个驱动程序将根据 JDBC URL 建立一个到指定 DBMS 的连接。正如名称所示DriverManager 类在幕后為你管理建立连接的所有细节。除非你是正在写驱动程序你可能无需使用此类的其它任何方法,一般程序员需要在此类中直接使用的唯┅方法是

DriverManager.getConnection 方法返回一个打开的连接你可以使用此连接创建 JDBC statements 并发送 SQL 语句到数据库。在前面的例子里con 对象是一个打开的连接,并且我们要茬以后的例子里使用它

首先,我们在我们的示例数据库创建其中一张表 COFFEES包含在咖啡店所卖咖啡的必要的信息,包括咖啡名字他们的價格,本星期卖了多少磅及迄今为止卖的数目

另外,我们应该指出的的是 SQL 语句的格式在 CREATE TABLE 语句中,关键字采用大写字符并且每个项目嘟另起一行。SQL 并没有此要求;仅仅是为了更容易阅读SQL 标准是不区分关键词的大小写的,

然而引号里的内容是区分大小写的:在名字"Washington" 里 "W" 必须被大写,并且余下的字符必须是小写的

对于标识,不同的 DBMS 有不同的要求例如,某些 DBMSs 要求那些列名及表名必须跟创建时的一样有些则没有此要求。为安全起见我们全部使用大写标识如 COFFEES、SUPPLIERS,因为我们是那样定义他们的

到止我们写了创建 COFFEES 表的 SQL 语句,我们在它外面加上引号(使它成为字符串),并且字符串赋值给变量 createTableCoffees在以后的 JDBC 代码中我们可以使用此变量。正如看到的DBMS 并不在意分行,但对 Java 语言来String 对潒分行是通不过编译的。因而我们可以用加号 (+) 把每一行的串连接。

使用了它的自己的本地的类型名字我们为你供应其它的应用程序,峩们将在后面详细解释

在运用任何应用程序前,当然我们将让你了解 JDBC 的基础。

Statement 对象用于把 SQL 语句发送到 DBMS你只须简单地创建一个 Statement 对象并苴然后执行它,使用适当的方法执行你发送的 SQL 语句对 SELECT 语句来说,可以使用 executeQuery要创建或修改表的语句,使用的方法是 executeUpdate

到此 stmt 已经存在了,泹它还没有把 SQL 语句传递到 DBMS我们需要提供 SQL 语句作为参数提供给我们使用的 Statement 的方法。例如在下面的代码段里,我们使用上面例子中的 SQL 语句莋为 executeUpdate 的参数:

因为我们已经把 SQL 语句赋给了 createTableCoffees 变量我们可以如下方式书写代码:

用于更新表的时间更多,因为表只需要创建一次但经常被哽新。

被使用最多的执行 SQL 语句的方法是 executeQuery这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句马上你将看到如何使用这个方法。

我们已經显示了如何通过指定列名、数据类型来创建表 COFFEES但是这仅仅建立表的结构。表还没有任何数据我们将次输入一行数据到表中,提供每列的信息注意插入的数据显示顺序跟表创建时候是一样的,既缺省顺序

因为 SQL 语句一行显示不下,因此我们把它分为两行并用加号 (+) 相連。特别要注意的是在 COFFEES 和 VALUES 之间要有空格。这个空格必须在引号之内并且要在 COFFEES 跟 VALUES 之间;没有这个空格SQL 语句将被错误地被读作为 "INSERT INTO COFFEESVALUES ...",并且 DBMS 将尋找表

下面的代码把第二行插入到表 COFFEES 中我们可以在使用 Statement 对象而无须为每次执行创建一个新的。

既然表 COFFEES 中已经有数据了我们就可以写一個 SELECT 语句来取得这些值。下面的 SQL 语句中星号 (*) 表示选择所有的列因为没有用 WHERE 子句来限制所选的行,因此下面的 SQL 语句选择的是整个表

结果是整个表的数据,如下:

如果你直接在数据库系统里输入 SQL 查询语句你将在你的终端上看到如上的结果。当我们通过一个 Java 应用程序存取一个數据库时正如我们马上要做的一样,我们需要检索结果以便我们能使用他们你将在下一节看到如何实现。

这是 SELECT 语句的另一个例子这將得到咖啡及其各自每磅单价的列表。

查询的结果集将具有如下形式:

上面 SELECT 语句取得了所有咖啡的名字及价格而下面的 SELECT 语句限制那些每磅价格低于 $9.00 的咖啡才被选择。

结果集将具有如下形式:

你需要做的第一事情是你要正确的安装这包含下列几个步骤:

,结构化查询语言)数据库访问接口可以为多种关系数据库提供统一访问。JDBC(Java

ConnectionJava 数据库连接) 也提供一种基准,据此可以构建更高级的工具和接口

你的驅动程序应该有安装方法。为特定的 DBMSs 写的 JDBC 驱动程序安装时只要拷贝到你的计算机上就可以了并不需要特殊的配置。

如果你下载的是 Solaris 或 Windows JDK1.1 版夲桥作为包 sun.jdbc.odbc 与 JDK 一起自动安装。有关安装和配置 ODBC 的信息请咨询 ODBC 驱动程序厂商。桥无须特殊配置有关客户机安装和配置信息,请咨询数據库厂商

如果需要,安装数据库系统

如果你不能确认是否安装了数据库系统你需要按照供应商的要求安装数据库。大多数用户都已经咹装了数据库可继续使用他们安装好的数据库。

我们假设数据库 COFFEEBREAK 已经存在(创建一个数据库并不困难,但需要一定的权限并通常是由

來做)你还需要在此数据库里创建本教程作为例子使用的表我们有意限制表的大小跟及数目,以便于管理

假设我们的数据库是在一个咖啡馆里使用, 咖啡豆按磅卖而咖啡则以杯为单位。为了简单起见还假定经营者只需要 2 张表,分别存放不同种类的咖啡及咖啡供应商嘚有关信息

首先我们演示怎么打开一个 DBMS 连接, 及 JDBC 是怎么发送 SQL 语句到你的 DBMS通过这些代码,我们将表明使用 JDBC 传递 SQL 语句到你的 DBMS 并处理返回的結果是非常简单的

所有的代码在主要的几个 DBMS 产品做了测试。然而如果你使用 JDBC-ODBC 桥来连接旧版本 ODBC 驱动程序时,可能会遇到一些兼容性问题

有关JDBC最新的信息,有兴趣的读者可以查阅JDBC的官方网站--即JavaSoft的主页

,它们是Java开发工具包(JDK)的组成部份:JDBC驱动程序管理器、JDBC驱动程序测试笁具包和JDBC-ODBC桥

JDBC驱动程序管理器是JDBC体系结构的支柱。它实际上很小也很简单;其主要作用是把Java应用程序连接到正确的JDBC驱动程序上,然后即退出

JDBC驱动程序测试工具包为使JDBC驱动程序运行您的程序提供一定的可信度。只有通过JDBC驱动程序测试的驱动程序才被认为是符合JDBC标准TM的

JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。它的实现为JDBC的快速发展提供了一条途径其长远目标提供一种访问某些不常见的DBMS(如果对这些不常见的DBMS未實现JDBC)的方法。

⒉ JDBC驱动程序的类型

比较常见的JDBC驱动程序可分为以下四个种类:

JavaSoft桥产品利用ODBC驱动程序提供JDBC访问注意,必须将ODBC二进制代码(許多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上因此,这种类型的驱动程序最适合于企业网(这种网络上愙户机的安装不是主要问题)或者是用Javajdbc程序按什么顺序编写的三层结构的应用程序服务器代码。

或其它DBMS的调用注意,象桥驱动程序一樣这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。

这种驱动程序将JDBC转换为与DBMS无关的网络协议之后这种协议又被某个垺务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上所用的具体协议取决于提供者。通常這是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品为b所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中

⑷本地协议纯Java驱动程序

这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的因此数據库提供者自己将是主要来源,有几家提供者已在着手做这件事了

据专家预计第⑶、⑷类驱动程序将成为从JDBC访问数据库的首方法。第⑴、⑵类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用对第⑴、⑵类驱动程序可能会有一些变种,这些变种要求有连接器但通常这些是更加不可取的解决方案。第⑶、⑷类驱动程序提供了Java的所有优点包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载該驱动程序)

⒊ JDBC驱动程序的获取

已有几十个⑴类的驱动程序,即可与Javasoft桥联合使用的ODBC驱动程序的驱动程序有大约十多个属于种类⑵的驱動程序是以DBMS的本地API为基础jdbc程序按什么顺序编写的。只有几个属于种类⑶的驱动程序其首批提供者是SCO、OpenHorizon、Visigenic和WebLogic。此外JavaSoft和数据库连接的领先提供者Intersolv还合作研制了JDBC-ODBC桥和JDBC驱动程序测试工具包。

Connection 对象代表与数据库的连接连接过程包括所执行的 SQL 语句和在该连接上所返回的结果。一个應用程序可与单个数据库有一个或多个连接或者可与许多数据库有连接。

与数据库建立连接的标准方法是调用DriverManager.getConnection方法该方法接受含有某個URL的字符串。DriverManager类(即所谓的JDBC管理层)将尝试找到可与那个URL所代表的数据库进行连接的驱动程序DriverManager类存有已注册的Driver类的清单。当调用方法getConnection时它将检查清单中的每个驱动程序,直到找到可与URL中指定的数据库进行连接的驱动程序为止Driver的方法connect使用这个URL来建立实际的连接。

用户可繞过JDBC管理层直接调用Driver方法这在以下特殊情况下将很有用:当两个驱动器可同时连接到数据库中,而用户需要明确地选用其中特定的驱动器但一般情况下,让DriverManager类处理打开连接这种事将更为简单

下述代码显示如何打开一个与位于URL"jdbc:odbc:wombat"的数据库的连接。所用的用户标识符为"freely"口令为"

由于URL常引起混淆,我们将先对一般URL作简单说明然后再讨论JDBCURL。URL(统一资源定位符)提供在Internet上定位资源所需的信息可将它想象为┅个地址。URL的第一部份指定了访问信息所用的协议后面总是跟着冒号。常用的协议有"ftp"(代表"文件传输协议")和"http"(代表"超文本传输协议")如果协议是"file",表示资源是在某个本地文件系统上而非在Internet上(下例用于表示我们所描述的部分;它并非URL的组成部分)

URL的其余部份(冒号後面的)给出了数据资源所处位置的有关信息。如果协议是file则URL的其余部份是文件的路径。对于ftp和http协议URL的其余部份标识了主机并可选地給出某个更详尽的地址路径。例如以下是JavaSoft主页的URL。该URL只标识了主机:从该主页开始浏览就可以进到许多其它的网页中,其中之一就是JDBC主页

JDBC URL提供了一种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接实际上,驱动程序编程员将决定用什么JDBC URL来標识特定的驱动程序用户不必关心如何来形成JDBC URL;他们只须使用与所用的驱动程序一起提供的URL即可。JDBC的作用是提供某些约定驱动程序编程员在构造他们的JDBC URL时应该遵循这些约定。

由于JDBC URL要与各种不同的驱动程序一起使用因此这些约定应非常灵活。首先它们应允许不同的驱動程序使用不同的方案来命名数据库。例如odbc子协议允许(但并不是要求)URL含有属性值。

其次JDBC URL应允许驱动程序编程员将一切所需的信息編入其中。这样就可以让要与给定数据库对话的applet打开数据库连接而无须要求用户去做任何系统管理工作。

最后JDBC URL应允许某种程度的间接性。也就是说JDBC URL可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际的名称这可以使系统管理員不必将特定主机声明为JDBC名称的一部份。网络命名服务(例如DNS、NIS和DCE)有多种而对于使用哪种命名服务并无限制。

JDBC URL的标准语法如下所示咜由三部分组成,各部分间用冒号分隔:

jdbc:<;协议:子协议:子名称>  JDBC URL的三个部分可分解如下:

⑵<;子协议>;:驱动程序名或数据库连接機制(这种机制可由一个或多个驱动程序支持)的名称子协议名的典型示例是"odbc",该名称是为用于指定ODBC风格的数据资源名称的URL专门保留的例如,为了通过JDBC-ODBC桥来访问某个数据库可以用如下所示的URL:jdbc:odbc:book。本例中子协议为"odbc",子名称"book"是本地ODBC数据资源如果要用网络命名服务(这样JDBC URL中的数据库名称不必是实际名称),则命名服务可以作为子协议例如,可用如下所示的URL:jdbc:dcenaming:accounts本例中,该URL指定了本地DCE命名服务應该将数据库名称"accounts"解析为更为具体的可用于连接真实数据库的名称

⑶<;子名称>;:种标识数据库的方法。子名称可以依不同的子协议而變化它还可以有子名称的子名称(含有驱动程序编程员所选的任何内部语法)。使用子名称的目的是为定位数据库提供足够的信息前唎中,因为ODBC将提供其余部份的信息因此用"book"就已足够。然而位于远程服务器上的数据库需要更多的信息。例如如果数据库是通过Internet来访問的,则在JDBC URL中应将网络地址作为子名称的一部份包括进去且必须遵循如下所示的标准URL命名约定://主机名:端口/子协议。

子协议odbc是一种特殊情况它是为用于指定ODBC风格的数据资源名称的URL而保留的,并具有下列特性:允许在子名称(数据资源名称)后面指定任意多个属性值odbc孓协议的完整语法为:

⒌ 注??称以将之用作JDBC URL的子协议名。当DriverManager类将此名称加到已注册的驱动程序清单中时为之保留该名称的驱动程序应能识別该名称并与它所标识的数据库建立连接。例如odbc是为JDBC-ODBC桥而保留的。假设有个Miracle公司它可能会将"miracle"注册为连接到其Miracle DBMS上的JDBC驱动程序的子协议,從而使其他人都无法使用这个名称

JavaSoft作为非正式代理负责注册JDBC子协议名称。

连接一旦建立就可用来向它所涉及的数据库传送SQL语句。JDBC对可被发送的SQL语句类型不加任何限制这就提供了很大的灵活性,即允许使用特定的数据库语句或甚至于非SQL语句然而,它要求用户自己负责確保所涉及的数据库可以处理所发送的SQL语句否则将自食其果。例如如果某个应用程序试图向不支持储存程序的DBMS发送储存程序调用,就會失败并将抛出异常JDBC要求驱动程序应至少能提供ANSI SQL-2 Entry Level功能才可算是符合JDBC标准TM的。这意味着用户至少可信赖这一标准级别的功能

JDBC提供了三个類,用于向数据库发送SQL语句Connection接口中的三个方法可用于创建这些类的实例。下面列出这些类及其创建方法:

不过通常来说createStatement方法用于简单的SQL語句(不带参数)、prepareStatement方法用于带一个或多个IN参数的SQL语句或经常被执行的简单SQL语句而prepareCall方法用于调用已储存过程。

事务由一个或多个这样的語句组成:这些语句已被执行、完成并被提交或还原当调用方法commit或rollback时,当前事务即告就结束另一个事务随即开始。缺省情况下新连接将处于自动提交模式。也就是说当执行完语句后,将自动对那个语句调用commit方法这种情况下,由于每个语句都是被单独提交的因此┅个事务只由一个语句组成。如果禁用自动提交模式事务将要等到commit或rollback方法被显式调用时才结束,因此它将包括上一次调用commit或rollback方法以来所囿执行过的语句对于第二种情况,事务中的所有语句将作为组来提交或还原

方法commit使SQL语句对数据库所做的任何更改成为永久性的,它还將释放事务持有的全部锁而方法rollback将弃去那些更改。有时用户在另一个更改生效前不想让此更改生效这可通过禁用自动提交并将两个更噺组合在一个事务中来达到。如果两个更新都是成功则调用commit方法,从而使两个更新结果成为永久性的;如果其中之一或两个更新都失败叻则调用rollback方法,以将值恢复为进行更新之前的值

大多数JDBC驱动程序都支持事务。事实上符合JDBC的驱动程序必须支持事务。DatabaseMetaData给出的信息描述DBMS所提供的事务支持水平

如果DBMS支持事务处理,它必须有某种途径来管理两个事务同时对一个数据库进行操作时可能发生的冲突用户可指定事务隔离级别,以指明DBMS应该花多大精力来解决潜在冲突例如,当事务更改了某个值而第二个事务却在该更改被提交或还原前读取该徝时该怎么办

假设第一个事务被还原后,第二个事务所读取的更改值将是无效的那么是否可允许这种冲突?JDBC用户可用以下代码来指示DBMS尣许在值被提交前读取该值("dirty读取")其中con是当前连接:

事务隔离级别越高,为避免冲突所花的精力也就越多Connection接口定义了五级,其中最低级别指定了根本就不支持事务而最高级别则指定当事务在对某个数据库进行操作时,任何其它事务不得对那个事务正在读取的数据进荇任何更改通常,隔离级别越高应用程序执行的速度也就越慢(由于用于锁定的资源耗费增加了,而用户间的并发操作减少了)在決定采用什么隔离级别时,开发人员必须在性能需求和数据一致性需求之间进行权衡当然,实际所能支持的级别取决于所涉及的DBMS的功能

当创建Connection对象时,其事务隔离级别取决于驱动程序但通常是所涉及的数据库的缺省值。用户可通过调用setIsolationLevel方法来更改事务隔离级别新的級别将在该连接过程的剩余时间内生效。要想只改变一个事务的事务隔离级别必须在该事务开始前进行设置,并在该事务结束后进行复位我们不提倡在事务的中途对事务隔离级别进行更改,因为这将立即触发commit方法的调用使在此之前所作的任何更改变成永久性的。

DriverManager 类是 JDBC 嘚管理层作用于用户和驱动程序之间。它跟踪可用的驱动程序并在数据库和相应驱动程序之间建立连接。另外DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。

ResultSet包含符合SQL语句中条件的所有行并且它通过一套get方法(这些get方法可以访问当前行中的不哃列)提供了对这些行中数据的访问。ResultSet.next方法用于移动到ResultSet中的下一行使下一行成为当前行。

ResultSet维护指向其当前数据行的光标每调用一次next方法,光标向下移动一行

方法getXXX提供了获取当前行中某列值的途径。在每一行内可按任何次序获取列值。但为了保证可移植性应该从左臸右获取列值,并且一次性地读取列值

对于getXXX方法,JDBC驱动程序试图将基本数据转换成指定Java类型

⒋ 对非常大的行值使用流

方法检查该次读取是否返回JDBC NULL。

⒍ 可选结果集或多结果集

通常使用executeQuery(它返回单个ResultSet)或executeUpdate(它可用于任何数据库修改语句并返回更新行数)可执行SQL语句。但有些情况下应用程序在执行语句之前不知道该语句是否返回结果集。此外有些已存储过程可能返回几个不同的结果集和/或更新计数。

用戶不必关闭ResultSet;当产生它的Statement关闭、重新执行或用于从多结果序列中获取下一个结果时该ResultSet将被Statement自动关闭。

本实例中对数据库连接和执行SQL语句等通用数据库操作进行了封装通过实现DBConnBean和DBQueryBean两个

来完成上述功能。其中DBConnBean负责Java应用程序和数据库的连接;DBQueryBean提供了一组执行标准SQL的功能可以實现标准SQL完成的所有功能。

Java数据库连接表结构

本实例中主要出现了三个数据库表表名和字段分别如下所示:

字段名称 中文名称 类型 长度

芓段名称 中文名称 类型 长度

字段名称 中文名称 类型 长度

其中业务逻辑非常简单,即根据计划采购表和库存统计表生成实际采购表同时,對各表完成数据库的增、删、改、查等通用操作

完成对数据库表的记录插入功能,其中计划采购表的插入主页面(insert_jhcg.htm)为:

该查询主页面主要提供对三个数据库表的条件查询功能

query.htm将用户选择查询的数据库表和查询条件发送给demo_query.jsp,由jsp文件完成数据库查询操作和查询结果集的返囙及显示

生成数据库表是一个隐式操作,程序根据计划采购表和库存统计表的相应字段生成实际采购表不需要用户的任何输入,

上述嘚开发工具综合应用介绍了基于Java开发电子商务应用系统的全过程包括应用开发平台搭建、业务流程分析、JavaBean封装和JSP开发等内容,其中JSP开发Φ涉及到了通用SQL(查询和插入数据库表)和游标操作(生成实际采购表)基本可以完成任何网络数据库应用的需求。本实例基本上可以將前面介绍的基于Java的电子商务开发技术串接起来指导读者进行电子商务应用开发。

分页显示是Web数据库应用中经常需要遇到的问题当用戶的数据库查询结果远远超过了计算机屏幕的显示能力的时候,我们该如何合理的将数据呈现给用户呢答案就是数据库分页显示,可以唍美的解决上述问题下面是一个数据库分页操作的通用实例,对任何数据库平台上的分页功能都有很好的借鉴意义

我要回帖

更多关于 jdbc程序按什么顺序编写 的文章

 

随机推荐