两个极菜的jdbc连接问题

hero 2001-05-17 06:09:00
1〉我有个jdbc的driver,是"com.inet.tds.TdsDriver",连接sql server不错,他能连接其他数据源吗?比如某个odbc源?
2〉我用 "jdbc:odbc:test" 这种url 来连接某个odbc源时,汇报“no suitable driver”!,难道jdbc-odbc也需要另外down个驱动吗?sun的站点哪里可以down呢?
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwhhwz 2001-05-17
  • 打赏
  • 举报
回复
同意以上观点,JDBC-ODBC驱动不须下载的,JDK支持它
hero 2001-05-17
  • 打赏
  • 举报
回复
天哪!这么麻烦!
我先看一会
hero 2001-05-17
  • 打赏
  • 举报
回复
天哪!这么麻烦!
我先看一会
wxyxl 2001-05-17
  • 打赏
  • 举报
回复
原则上一种驱动程序只能连接一种数据库,我觉得是不能连接上别的数据库的,
要连接ODBC可以用JDBC-ODBC桥嘛!
用JDBC-ODBC桥的话,先要在控制面板里面建立一个数据源test,看看下面的介绍吧!
再就是CSDN的Java开发文档里面有很多介绍这方面的文章。你可以去看看!

下面是《thinking in java》中的一段话

JDBC为我们提供了一个“驱动程序管理器”,它能动态维护数据库查询所需的所有驱动程序对象。所以假如要连接由三家公司开发的不同种类的数据库,就需要三个单独的驱动程序对象。驱动程序对象会在装载时由“驱动程序管理器”自动注册,并可用Class.forName()强行装载。
为打开一个数据库,必须创建一个“数据库URL”,它要指定下述三方面的内容:
(1) 用“jdbc”指出要使用JDBC。
(2) “子协议”:驱动程序的名字或者一种数据库连接机制的名称。由于JDBC的设计从ODBC吸收了许多灵感,所以可以选用的第一种子协议就是“jdbc-odbc桥”,它用“odbc”关键字即可指定。
(3) 数据库标识符:随使用的数据库驱动程序的不同而变化,但一般都提供了一个比较符合逻辑的名称,由数据库管理软件映射(对应)到保存了数据表的一个物理目录。为使自己的数据库标识符具有任何含义,必须用自己的数据库管理软件为自己喜欢的名字注册(注册的具体过程又随运行平台的不同而变化)。
所有这些信息都统一编译到一个字串里,即“数据库URL”。举个例子来说,若想通过ODBC子协议同一个标识为“people”的数据库连接,相应的数据库URL可设为:
String dbUrl = "jdbc:odbc:people"
如果通过一个网络连接,数据库URL也需要包含对远程机器进行标识的信息。
准备好同数据库连接后,可调用静态方法DriverManager.getConnection(),将数据库的URL以及进入那个数据库所需的用户名密码传递给它。得到的返回结果是一个Connection对象,利用它即可查询和操纵数据库。
下面这个例子将打开一个联络信息数据库,并根据命令行提供的参数查询一个人的姓(Last Name)。它只选择那些有E-mail地址的人的名字,然后列印出符合查询条件的所有人:

让示例运行起来
就JDBC来说,代码本身是很容易理解的。最令人迷惑的部分是如何使它在自己特定的系统上运行起来。之所以会感到迷惑,是由于它要求我们掌握如何才能使JDBC驱动程序正确装载,以及如何用我们的数据库管理软件来设置一个数据库。
当然,具体的操作过程在不同的机器上也会有所区别。但这儿提供的在32位Windows环境下操作过程可有效帮助大家理解在其他平台上的操作。

1. 步骤1:寻找JDBC驱动程序
上述程序包含了下面这条语句:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
这似乎暗示着一个目录结构,但大家不要被它蒙骗了。在我手上这个JDK 1.1安装版本中,根本不存在叫作JdbcOdbcDriver.class的一个文件。所以假如在看了这个例子后去寻找它,那么必然会徒劳而返。另一些人提供的例子使用的是一个假名字,如“myDriver.ClassName”,但人们从字面上得不到任何帮助。事实上,上述用于装载jdbc-odbc驱动程序(实际是与JDK 1.1配套提供的唯一驱动)的语句在联机文档的多处地方均有出现(特别是在一个标记为“JDBC-ODBC Bridge Driver”的页内)。若上面的装载语句不能工作,那么它的名字可能已随着Java新版本的发布而改变了;此时应到联机文档里寻找新的表述方式。
若装载语句出错,会在这个时候得到一个违例。为了检验驱动程序装载语句是不是能正常工作,请将该语句后面直到catch从句之间的代码暂时设为注释。如果程序运行时未出现违例,表明驱动程序的装载是正确的。

2. 步骤2:配置数据库
同样地,我们只限于在32位Windows环境中工作;您可能需要研究一下自己的操作系统,找出适合自己平台的配置方法。
首先打开控制面板。其中可能有两个图标都含有“ODBC”字样,必须选择那个“32位ODBC”,因为另一个是为了保持与16位软件的向后兼容而设置的,和JDBC混用没有任何结果。双击“32位ODBC”图标后,看到的应该是一个卡片式对话框,上面一排有多个卡片标签,其中包括“用户DSN”、“系统DSN”、“文件DSN”等等。其中,“DSN”代表“数据源名称”(Data Source Name)。它们都与JDBC-ODBC桥有关,但设置数据库时唯一重要的地方“系统DSN”。尽管如此,由于需要测试自己的配置以及创建查询,所以也需要在“文件DSN”中设置自己的数据库。这样便可让Microsoft Query工具(与Microsoft Office配套提供)正确地找到数据库。注意一些软件公司也设计了自己的查询工具。
最有趣的数据库是我们已经使用过的一个。标准ODBC支持多种文件格式,其中包括由不同公司专用的一些格式,如dBASE。然而,它也包括了简单的“逗号分隔ASCII”格式,它几乎是每种数据工具都能够生成的。就目前的例子来说,我只选择自己的“people”数据库。这是我多年来一直在维护的一个数据库,中间使用了各种联络管理工具。我把它导出成为一个逗号分隔的ASCII文件(一般有个.csv扩展名,用Outlook Express导出通信簿时亦可选用同样的文件格式)。在“文件DSN”区域,我按下“添加”按钮,选择用于控制逗号分隔ASCII文件的文本驱动程序(Microsoft Text Driver),然后撤消对“使用当前目录”的选择,以便导出数据文件时可以自行指定目录。
大家会注意到在进行这些工作的时候,并没有实际指定一个文件,只是一个目录。那是因为数据库通常是由某个目录下的一系列文件构成的(尽管也可能采用其他形式)。每个文件一般都包含了单个“数据表”,而且SQL语句可以产生从数据库中多个表摘取出来的结果(这叫作“联合”,或者join)只包含了单张表的数据库(就象目前这个)通常叫作“平面文件数据库”。对于大多数问题,如果已经超过了简单的数据存储与获取力所能及的范围,那么必须使用多个数据表。通过“联合”,从而获得希望的结果。我们把这些叫作“关系型”数据库。

3. 步骤3:测试配置
为了对配置进行测试,需用一种方式核实数据库是否可由查询它的一个程序“见到”。当然,可以简单地运行上述的JDBC示范程序,并加入下述语句:
Connection c = DriverManager.getConnection(
dbUrl, user, password);
若掷出一个违例,表明你的配置有误。
然而,此时很有必要使用一个自动化的查询生成工具。我使用的是与Microsoft Office配套提供的Microsoft Query,但你完全可以自行选择一个。查询工具必须知道数据库在什么地方,而Microsoft Query要求我进入ODBC Administrator的“文件DSN”卡片,并在那里新添一个条目。同样指定文本驱动程序以及保存数据库的目录。虽然可将这个条目命名为自己喜欢的任何东西,但最好还是使用与“系统DSN”中相同的名字。
做完这些工作后,再用查询工具创建一个新查询时,便会发现自己的数据库可以使用了。

4. 步骤4:建立自己的SQL查询
我用Microsoft Query创建的查询不仅指出目标数据库存在且次序良好,也会自动生成SQL代码,以便将其插入我自己的Java程序。我希望这个查询能够检查记录中是否存在与启动Java程序时在命令行键入的相同的“姓”(Last Name)。所以作为一个起点,我搜索自己的姓“Eckel”。另外,我希望只显示出有对应E-mail地址的那些名字。创建这个查询的步骤如下:
(1) 启动一个新查询,并使用查询向导(Query Wizard)。选择“people”数据库(等价于用适应的数据库URL打开数据库连接)。
(2) 选择数据库中的“people”表。从这张数据表中,选择FIRST,LAST和EMAIL列。
(3) 在“Filter Data”(过滤器数据库)下,选择LAST,并选择“equals”(等于),加上参数Eckel。点选“And”单选钮。
(4) 选择EMAIL,并选中“Is not Null”(不为空)。
(5) 在“Sort By”下,选择FIRST。
查询结果会向我们展示出是否能得到自己希望的东西。
现在可以按下SQL按钮。不需要我们任何方面的介入,正确的SQL代码会立即弹现出来,以便我们粘贴和复制。对于这个查询,相应的SQL代码如下:

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧