JDBC常见问题__教程 |
|
日期:2007-5-20 0:36:10 人气:64 [大 中 小] |
|
|
|
参阅 有关支持 JDBC 技术驱动程序的 Web 页,获取当前可用的驱动程序列表。
回到页首
7. 有哪些可用的 JDBC API 文档?
参阅 JDBC 技术主页,该页面中有一些链接指向有关 JDBC 技术的信息。这个页面链接到有关特性和优点的信息、一系列新特性、有关入门介绍的一节、在线教程和有关驱动程序要求的一节等信息,它还链接到规范和 javadoc 文档。
回到页首
8. 是否有不可与 JDBC-ODBC Bridge 一起工作的 ODBC 驱动程序?
多数 ODBC 2.0 驱动程序应当与 Bridge 一起工作。由于 ODBC 驱动程序之间在功能上有一些区别,因此 Bridge 的功能可能会受到影响。Bridge 与流行的 PC 数据库一起工作,比如 Microsoft Access 和 FoxPro。
回到页首
9. 什么会引起“No suitable driver”(没有合适的驱动程序)错误?
在调用 DriverManager.getConnection 方法期间,经常会出现“No suitable driver”的错误。 原因可能是在调用 getConnection 方法之前,加载合适的 JDBC 驱动程序失败,或者它可能正在指定一个非法的 JDBC URL——一个不被 JDBC 驱动程序识别的 URL。最好的办法是检查 JDBC 驱动程序的文档或联系您的 JDBC 驱动程序供应商,前提是您怀疑正在指定不被 JDBC 驱动程序识别的 URL。
此外,当您正在使用 JDBC-ODBC Bridge 时,如果不能加载 Bridge 所需的一个或多个共享库,这种错误就可能发生。如果您认为这是原因所在,就检查您的配置,以确保 Bridge 能够访问共享库。
回到页首
10. 为什么不能找到 java.sql.DriverManager 类?
这个问题可能是由于在支持 JDK 1.0.2 的浏览器(如 Netscape Navigator 3.0)中运行 JDBC applet 引起的。JDK 1.0.2 不包含 JDBC API,因此在浏览器中运行的 Java 虚拟机通常不能找到 DriverManager 类。
这里有一个解决方案,它不要求在 Web 客户端上做任何附加的配置。记住,出于安全方面的考虑,java.* 包 中的类不能由多数浏览器下载。因此,许多全 Java 驱动程序供应商提供了不同版本的 java.sql.*类,并将它们命名为 jdbc.sql.*,而且也一起提供了使用了这些修改后的类的驱动程序版本。如果在 applet 代码中导入 jdbc.sql.* 而不是 java.sql.*,并在 applet 的基本代码 (codebase) 中添加由 JDBC 驱动程序供应商提供的 jdbc.sql.* 类,那么 applet 所需的所有 JDBC 类就可以在运行时由浏览器下载,包括 DriverManager 类。
这个解决方案将使得 applet 能够在支持 JDK 1.0.2 的任何客户端浏览器中工作。applet 也可以在支持 JDK 1.1 的浏览器中工作,不过出于性能方面的考虑,可能想切换到 JDK 1.1 类。也请记住,这里描绘的解决方案只是一个例子,其他的解决方案也是可能的。
回到页首
11. 我如何一次检索一整行数据,而不是针对每一列都调用一次 ResultSet.getXXX 方法?
ResultSet.getXXX 方法是从 ResultSet 对象中检索数据的惟一方法,这表明必须对行中的每一列发出一个调用。然而这不大可能是导致性能问题的原因所在,因为很难看到,在任何场合中,如何提取一列,而不用至少开销一次函数调用。我们欢迎开发人员提供有关本主题的信息。
回到页首
12. 为什么 ODBC 驱动程序管理器会返回“Data source name not found and no default driver specified Vendor: 0”(数据源名称没有找到并且没有默认的驱动程序指定供应商:0)?
在尝试使用 Bridge 连接到数据库期间,这种类型的错误就可能发生。首先,请注意错误是来自 ODBC 驱动程序管理器。这表明 Bridge——普通的 ODBC 客户端——已经成功调用 ODBC,因此问题不是由于本地库不存在而导致的。在这种情形下,它表明错误是由于如下事实而导致的:需要在客户计算机上配置 ODBC DSN(数据源名称)。开发人员经常会忘记这样做,认为 Bridge 应该会找到远程服务器计算机上配置的 DSN。
回到页首
13. 是否所有需要的 JDBC 驱动程序都将创建到 JDK 的数据库部分的连接?
不是。除了 JDBC-ODBC Bridge 外,没有任何的支持 JDBC 技术的驱动程序与 JDK 1.1.x 或 Java 2 Platform 版本捆绑在一起。因此,开发人员需要获取驱动程序并安装它,然后才可以连接到数据库。我们正在考虑在将来捆绑支持 JDBC 技术的驱动程序。
回到页首
14. JDBC-ODBC Bridge 是多线程的吗?
不是。JDBC-ODBC Bridge 不支持来自不同线程的并发访问。JDBC-ODBC Bridge 使用同步方法来序列化它对 ODBC 的所有调用。多线程 Java 程序可以使用 Bridge,但它们不能得到多线程的优点。此外,死锁可能在数据库持有的锁和 Bridge 使用的信号 (semaphore) 之间发生。我们正考虑将来删除同步方法。原来添加它们的目的是,使得对于编写使用单线程 ODBC 驱动程序的 Java 程序的人员来说,事情变得简单了。
回到页首
15. JDBC-ODBC Bridge 是否在每个连接中支持多个并发的打开语句?
不是。当使用 JDBC-ODBC Bridge 时,每个连接只能打开一个 Statement 对象。
回到页首
16. 当 next 方法工作时,我为什么不能调用 ResultSet 方法 afterLast 和 beforeFirst?
您可能正在使用针对 JDBC 1.0 API 实现的驱动程序。需要升级到 JDBC 2.0 驱动程序,它实现了可滚动结果集。同时保证了代码已经创建可滚动结果集,并且正在使用的 DBMS 支持它们。 |
|
出处:本站原创 作者:佚名 |
|
|