Username: Password:

几种注册 ODBC数据源的方法-数据库专栏,SQL Server
来源:作者: 发布时间:2007-12-26 02:01:58

几种注册 odbc数据源的方法
国防科大 丁 浩


odbc(open database connectivity,开放式数据库互连)是一种应用程式接口 (api) 规范。他定义了一个标准例程集,使用他们应用程式可访问数据源中的数据。应用程式通过引用 api 的函数能够直接使用 odbc,或利用数据访问对象 (dao) 或远程数据对象 (rdo) 来使用odbc。但是,在实现odbc时,我们必须首先配置odbc环境,进行数据源的注册,这样才能在对数据库进行编程时,对数据源进行连接、访问和操作。本文介绍几种常用的注册odbc数据源的方法。
手工配置
1.odbc数据源管理器
在进行数据库研发时,为了达到配置odbc,进行dsn定义注册的目的,微软给出了一个手工操作的解决方法。在windows 9x操作系统的控制面板中,有一个名为“odbc数据源(32位)”的图标,能够通过他激活专门为用户配置odbc环境的程式(odbc data source administrator,odbc数据源管理器)。在windows 2000操作系统中,上述图标被放置在控制面板的“管理工具”里面。
这个用于配置odbc环境的程式叫做桌面驱动程式,他支持数种dbms(database management system,数据库管理系统)。当用户想增加一个数据源和一个所需要的驱动程式时,能够通过odbc数据源管理器的配置对话框配置特定类型的数据库。大多数情况下,在编写对数据库操作的程式时,我们至少需要知道诸如数据库文档名、系统(本地或远程)、文档夹等信息,同时要给数据源命名。
2.定义数据源的类型
用户能够定义以下三种类型的数据源:
用户数据源:作为位于电脑本地的用户数据源而创建的,并且只能被创建这个数据源的用户所使用;
系统数据源:作为属于电脑或系统而不是特定用户的系统数据源而创建的,用户必须有访问权才能使用;
文档数据源:指定到文档中作为文档数据源而定义的,任何已正确地安装了驱动程式的用户皆能够使用这种数据源。
3.数据源注册的步骤
以microsoft access为例,假如在c:\myfile\文档夹里创建了一个名为myexample.mdb的数据库文档,其注册步骤如下:
在控制面板里找到“odbc数据源”图标,打开数据源管理器的交互界面;
笔者创建的数据库文档是供本机上的用户使用的,所以这里选择“用户 dsn”;
然后按下“添加”按钮,在弹出的数据源管理器对话框里,为自己所要创建的数据源选择一个驱动程式,本文的数据库文档是用microsoft access创建的,所以要选择“microsoft access driver (*.mdb)”;
按“完成”按钮后,进入一个标题为“odbc microsoft access 安装”的界面,在其中配置“数据源名”为“mydatasource”,选取数据库文档 “c:\myfile\myexample.mdb”,然后确定即可。
这样我们就完成了一个简单的odbc数据源的注册。当然,在以上的步骤中,用户能够根据自己的不同需要,配置不同的选项。
注册结束后,我们便能够在对数据库的编程中,操作该数据库了。
在vb中注册数据源
在vb中对数据库进行编程时,能够利用registerdatasource方法为odbc数据源输入连接信息到 windows 注册表中。他的语法是:
registerdatasource dsn, driver, silent, attributes
其中参数代表的含义分别为:
dsn:字符串表达式,他是在引用数据源描述信息块时所使用的名字。例如,假如数据源是个odbc远程数据库,这就是服务器的名字;假如是用户dsn,则是注册的数据源的名字。
drive:字符串表达式,表示odbc驱动程式的名称。他并不是 odbc 驱动程式动态连接库 (dll) 文档名。例如,sql server 是驱动程式名,而 sqlsrvr.dll 是 dll 文档名。必须安装odbc 及相应的驱动程式。
silent:布尔类型值,假如不想显示 odbc 驱动程式对话框,用以提示指定驱动程式的信息,该值就为 true;假如希望显示 odbc 驱动程式对话框,该值就为 false。假如 silent 为 true,那么attributes必须包含任何必需的指定驱动程式的信息。
attributes:字符串表达式,他是个要添加到 odbc.ini 文档中的关键字列表。编写程式时,能够根据需要选择若干attributes的参数进行配置。
例如:我们能够编写如下的vb程式,达到和上面手工注册相同的目的。程式清单如下:
sub registerdatasource()
dim strattribs as string
’建造关键字字符串。
’c:\myfile\myexample.l.mdb数据库文档名(包含路径)
strattribs =“dbq=” _
& “c:\myfile\myexample.mdb” _
& chr$(13) & “oemtoansi=no” _
& chr$(13) & “server=sequel” _
& chr$(13) & “network=dbnmpntw” _
& chr$(13) & “database=workdb”_
& chr$(13) &“address=\ equel\pipe ql\query”
’建立新的注册的 dsn。
rdoengine.rdoregisterdatasource “mydatasource”,
“microsoft access driver (*.mdb)”, true,
strattribs
end sub
private sub form_load()
call rdoregisterdatasource
end sub
注意:为了在代码中使用rdoengine和远程数据对象,必须先在“引用"对话框中配置一个到 microsoft remote data object 2.0 对象库的引用,否则在第一次引用rdoengine 对象时会导致编译错误。
利用注册表合并
1.解决思路
考查odbc数据源注册后对windows注册表的修改情况,我们能够发现所注册的数据源对windows注册表的影响关键集中在[hkey_current_user oftware\odbc\odbc.ini]里。
这样,我们导出[hkey_current_user oftware\odbc\odbc.ini],每次以之为模板,把所要注册的数据源信息加入到注册表导出文档的对应位置,然后再将该文档和系统注册表合并即可。
2.具体操作
首先,我们要弄清楚regedit 及其参数的含义。regedit是打开系统注册表的命令。在“开始\运行\”中输入即可。他的三个参数含义如下:
regedit /e myfile.reg :表示把注册表文档导出到myfile.reg 文档中,相当于复制整个注册表文档到myfile.reg中;
regedit /c myfile.reg:表示把myfile.reg导入注册表,相当于用该文档的内容覆盖了注册表的内容;
regedit /s myfile.reg :表示把myfile.reg文档的内容和注册表文档的内容进行合并。
我们只需在注册表中将有用的部分导出,而后将所要注册的数据源的信息加入,再和系统注册表合并就能够了。这个合并的过程,我们既能够手工输入来实现,也能够通过编程实现自动合并。
注意:为了防止误操作,一定要将系统注册表作一次备份。
小 结
从安全的角度考虑,笔者首推利用在windows控制面板中的odbc数据源管理工具来进行数据源注册,以免因对注册表的不熟或疏忽造成不必要的损失。当然,更有一些应用工具,能够实现对odbc数据源的注册,用户能够根据不同的需求选择使用。

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅