社区
Java SE
帖子详情
两个极菜的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
打赏
收藏
两个极菜的jdbc连接问题
1〉我有个jdbc的driver,是"com.inet.tds.TdsDriver",连接sql server不错,他能连接其他数据源吗?比如某个odbc源? 2〉我用 "jdbc:odbc:test" 这种url 来连接某个odbc源时,汇报“no suitable driver”!,难道jdbc-odbc也需要另外down个驱动吗?sun的站点哪里可以down呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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代码如下:
JDBC
连接
数据库操作(三)
利用前两篇的知识,写一个综合的小案例,实现对数据库的增删查改。 表的结构数据库名为day12表名为person 表有两列,列名分别是id和name 代码import java.sql.ResultSet; import java.util.Scanner; import ...
spring学习-spring
jdbc
连接
池的配置(一)
1、 如果没有任何一个用户使用
连接
,那么那么应该维持一定数量的
连接
,等待用户使用。 2、 如果
连接
已经满了,则必须打开新的
连接
,供更多用户使用。 3、 如果一个服务器就只能有100个
连接
,那么如果有第101...
Java数据库
连接
JDBC
JDBC
是用于在Java语言编程中与数据库
连接
的API。根本上,
JDBC
是一个规范,它提供了一整套接口,允许以一种可移植的访问底层数据库API。 Java可以用它来编写不同类型的可执行文件。 2.
JDBC
架构 两层: ...
彻底搞懂
JDBC
连接
数据库
本人是个小菜,正向着全栈工程师的方向努力着,文章可能并不高产,也很基础,但每写一篇都在用心总结,请大佬勿喷。 如果您对编程有兴趣,请关注我的动态,一起学习研究。 感谢每位读者!
JDBC
简介 Java数据库
连接
...
【
JDBC
系列】-
jdbc
的概念以及与数据库的交互流程
使用
jdbc
与数据库进行通信,简单来说就只有6个步骤,首先需要注册驱动,获取
连接
,接着创建statement对象,用来存放sql语句并且执行,然后将获得到的数据进行解析,最后就是要把资源进行销毁。这里只是基本的使用...
Java SE
62,612
社区成员
307,332
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章