📄 connection.doc.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=gb2312">
<title></title>
</head>
<body bgcolor="#ffffff">
<table width="600">
<tr>
<td><font size="-1"><a href="introTOC.doc.html">目录</a> | <a href="intro.doc.html">上一页</a>
| <a href="drivermanager.doc.html">下一页</a> </font></td>
<td align="right"><i>JDBC<sup><font size="-2">TM</font></sup> 指南:入门</i></td>
</tr>
</table>
<hr>
<p><br>
<a name="1000900"></a> </p>
<h1>2 - 连接</h1>
<p>本概述是从《<em>JDBC<font size="-1"><sup>TM</sup></font> Database Access from
Java<font size="-1"><sup>TM</sup></font>: A Tutorial and Annotated Reference </em>》这本书中摘引来的。JavaSoft
目前正在准备这本书。这本书是一本教程,同时也是 JDBC
的重要参考手册,它将作为 Java 系列的组成部份在 1997 年春季由
Addison-Wesley 出版公司出版。</p>
<p><a name="996856"></a> </p>
<h2>2.1 概述</h2>
<code>
<p>Connection</code> 对象代表与数据库的连接。连接过程包括所执行的
SQL
语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。</p>
<p><a name="1000950"></a> </p>
<h3>2.1.1 打开连接</h3>
<p>与数据库建立连接的标准方法是调用 <code>DriverManager.getConnection</code>
方法。该方法接受含有某个 URL 的字符串。<code>DriverManager</code>
类(即所谓的 JDBC 管理层)将尝试找到可与那个 URL
所代表的数据库进行连接的驱动程序。<code>DriverManager</code>
类存有已注册的 <code>Driver</code> 类的清单。当调用方法 <code>getConnection</code>
时,它将检查清单中的每个驱动程序,直到找到可与 URL
中指定的数据库进行连接的驱动程序为止。<code>Driver</code> 的方法 <code>connect</code>
使用这个 URL 来建立实际的连接。</p>
<p><a name="1000952"></a>用户可绕过 JDBC 管理层直接调用 <code>Driver</code>
方法。这在以下特殊情况下将很有用:当两个驱动器可同时连接到数据库中,而用户需要明确地选用其中特定的驱动器。但一般情况下,让
<code>DriverManager</code> 类处理打开连接这种事将更为简单。</p>
<p><a name="1000959"></a>下述代码显示如何打开一个与位于 URL <code>"jdbc:odbc:wombat"</code>
的数据库的连接。所用的用户标识符为 <code>"oboy"</code>
,口令为 <code>"12Java"</code>: </p>
<pre><a name="1000960"></a> String url = "jdbc:odbc:wombat";
<a name="1000961"></a> Connection con = DriverManager.getConnection(url, "oboy", "12Java");
</pre>
<a name="1001163"></a>
<h3>2.1.2 一般用法的 URL</h3>
<p>由于 URL 常引起混淆,我们将先对一般 URL
作简单说明,然后再讨论 JDBC URL。</p>
<p><a name="1001165"></a>URL(统一资源定位符)提供在 Internet
上定位资源所需的信息。可将它想象为一个地址。</p>
<p><a name="1001166"></a>URL
的第一部份指定了访问信息所用的协议,后面总是跟着冒号。常用的协议有
"ftp"(代表“文件传输协议”)和 "http"
(代表“超文本传输协议”)。如果协议是 "file",表示资源是在某个本地文件系统上而非在
Internet 上(下例用于表示我们所描述的部分;它并非 URL
的组成部分)。</p>
<pre><a name="1001167"></a> <strong> ftp:</strong>//javasoft.com/docs/JDK-1_apidocs.zip
<a
name="1001168"></a> <strong> http:</strong>//java.sun.com/products/jdk/CurrentRelease
<a
name="1001169"></a> <strong>file</strong>:/home/haroldw/docs/books/tutorial/summary.html
</pre>
<p>URL
的其余部份(冒号后面的)给出了数据资源所处位置的有关信息。如果协议是
<code>file</code>,则 URL 的其余部份是文件的路径。对于 <code>ftp</code>
和 <code>http</code> 协议,URL
的其余部份标识了主机并可选地给出某个更详尽的地址路径。例如,以下是
JavaSoft 主页的 URL。该 URL 只标识了主机: </p>
<pre><a name="1001171"></a> http://java.sun.com
</pre>
<p>从该主页开始浏览,就可以进到许多其它的网页中,其中之一就是
JDBC 主页。JDBC 主页的 URL 更为具体,它看起来类似: </p>
<pre><a name="1001173"></a> http://java.sun.com/products/jdbc
</pre>
<a name="1001174"></a>
<h3>2.1.3 JDBC URL </h3>
<p>JDBC URL
提供了一种标识数据库的方法,可以使相应的驱动程序能识别该数据库并与之建立连接。实际上,驱动程序编程员将决定用什么
JDBC URL 来标识特定的驱动程序。用户不必关心如何来形成 JDBC URL;他们只须使用与所用的驱动程序一起提供的
URL 即可。JDBC 的作用是提供某些约定,驱动程序编程员在构造他们的
JDBC URL 时应该遵循这些约定。</p>
<p>由于 JDBC URL
要与各种不同的驱动程序一起使用,因此这些约定应非常灵活。首先,它们应允许不同的驱动程序使用不同的方案来命名数据库。例如,
<code>odbc</code> 子协议允许(但并不是要求) URL 含有属性值。</p>
<p><a name="1001177"></a>第二,JDBC URL
应允许驱动程序编程员将一切所需的信息编入其中。这样就可以让要与给定数据库对话的
applet 打开数据库连接,而无须要求用户去做任何系统管理工作。</p>
<p><a name="1001178"></a>第三, JDBC URL
应允许某种程度的间接性。也就是说,JDBC URL
可指向逻辑主机或数据库名,而这种逻辑主机或数据库名将由网络命名系统动态地转换为实际的名称。这可以使系统管理员不必将特定主机声明为
JDBC 名称的一部份。网络命名服务(例如 DNS、 NIS 和 DCE )有多种,而对于使用哪种命名服务并无限制。</p>
<p><a name="1001179"></a> JDBC URL 的标准语法如下所示。它<strong>由三部分组成,各部分间用冒号分隔:</strong>
</p>
<pre><a name="1001180"></a> jdbc:< 子协议 >:< 子名称 >
</pre>
<strong>
<p>JDBC URL 的三个部分可分解如下: </strong>
<ol>
<p><a name="1001182"></a></p>
<li><code>jdbc</code> ─ 协议。JDBC URL 中的协议总是 <code>jdbc</code>。<pre><a
name="1001183"></a>
<a name="1001184"></a> </pre>
</li>
<li><code><子协议></code> ─
驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。子协议名的典型示例是
"odbc",该名称是为用于指定 ODBC 风格的数据资源名称的 URL
专门保留的。例如,为了通过 JDBC-ODBC
桥来访问某个数据库,可以用如下所示的 URL: <pre><a name="1001185"></a> jdbc:odbc:fred
<a
name="1001186"></a>
本例中,子协议为 "odbc",子名称 "fred" 是本地
ODBC 数据资源。
</pre>
<p>如果要用网络命名服务(这样 JDBC URL
中的数据库名称不必是实际名称),则命名服务可以作为子协议。例如,可用如下所示的
URL : </p>
<pre><a name="1001188"></a> jdbc:dcenaming:accounts-payable
<a name="1001189"></a>
本例中,该 URL 指定了本地 DCE 命名服务应该将
数据库名称 "accounts-payable" 解析为更为具体的
可用于连接真实数据库的名称。
</pre>
<p><a name="1001191"></a> </p>
</li>
<li><code><子名称></code> ─
一种标识数据库的方法。子名称可以依不同的子协议而变化。它还可以有子名称的子名称(含有驱动程序编程员所选的任何内部语法)。使用子名称的目的是为定位数据库提供足够的信息。前例中,因为
ODBC 将提供其余部份的信息,因此用 "fred"
就已足够。然而,位于远程服务器上的数据库需要更多的信息。例如,如果数据库是通过
Internet 来访问的,则在 JDBC URL
中应将网络地址作为子名称的一部份包括进去,且必须遵循如下所示的标准
URL 命名约定: </li>
</ol>
<pre><a name="1001192"></a> <code>//主机名:端口/子协议</code>
<a
name="1001193"></a>
假设 "dbnet" 是个用于将某个主机连接到 Internet 上的协议,则 JDBC URL 类似:
</pre>
<p><a name="1001194"></a> jdbc:dbnet://wombat:356/fred <a name="1001002"></a> </p>
<a name="1001002"></a>
<h3>2.1.4 "odbc" 子协议</h3>
<p>子协议 <code>odbc</code> 是一种特殊情况。它是为用于指定 ODBC
风格的数据资源名称的 URL
而保留的,并具有下列特性:允许在子名称(数据资源名称)后面指定任意多个属性值。odbc
子协议的完整语法为: </p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -