说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

主題:如何动态新增、移除 ODBC DSN? -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
主題:如何动态新增、移除 ODBC DSN? -VB资料
版本:VB6 / VB5 / VB4-32


一般我们建立 Client 端 DSN 都是在使用者的机器上进入【控制面板】【ODBC 数据源(32位)】去建立,但是如果我们开发的 APP 使用者很多时,这就有点累人了,所以我们可以將这个动作放在程序中!

新增 DSN 的方法有二种:
1、使用 DBEngine 控件的 RegisterDatabase 方法
2、呼叫 SQLConfigDataSource API

不管使用以上任何一种方法新增 DSN,一共会写入二个地方,一个是注册表,一个是 ODBC.INI。

而刪除 DSN 的方法同上面的第二种方法,呼叫 SQLConfigDataSource API。

以下之模块以 Oracle73 Ver 2.5 为例,在 Form 的声明区中加入以下声明及模块:

Private Const ODBC_ADD_DSN = 1 ' Add data source
Private Const ODBC_CONFIG_DSN = 2 ' Configure (edit) data source
Private Const ODBC_REMOVE_DSN = 3 ' Remove data source
Private Const vbAPINull As Long = 0& ' NULL Pointer

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long

Public Sub CreateDSN(sDSN As String)
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "Oracle73 Ver 2.5"
sAttributes = "Server=Oracle8" & Chr$(0)
sAttributes = sAttributes & "DESCRIPTION=" & sDSN & Chr$(0)
'sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
sAttributes = sAttributes & "DATABASE=DBFinance" & Chr$(0)
sAttributes = sAttributes & "Userid=Scott" & Chr$(0)
'sAttributes = sAttributes & "PWD=myPassword" & Chr$(0)
DBEngine.RegisterDatabase sDSN, sDriver, True, sAttributes '注一
'nRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, sDriver, sAttributes) '注二
End Sub

Public Sub DeleteDSN(sDSN As String)
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "Oracle73 Ver 2.5"
sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
nRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, sDriver, sAttributes)
End Sub
'假设要产生的 DSN 为 Test,实际使用示例如下:

Private Sub Command1_Click()
CreateDSN "Test"
End Sub

Private Sub Command2_Click()
DeleteDSN "Test"
End Sub
'而写到系統的数据如下:
1、ODBC.INI

[ODBC 32 bit Data Sources]
Test=Oracle73 Ver 2.5 (32 bit)

[Test]
Driver32=C:\ORAWIN95\ODBC250\sqo32_73.dll
2、注册表

机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
名称:Test 数据:Oracle73 Ver 2.5

机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\Test
名称:Description 数据:Test
名称:Driver 数据:C:\ORAWIN95\ODBC250\sqo32_73.dll
名称:Server 数据:Oracle8
名称:UserId 数据:Scott
※注一及注二可任选一种,只要將不使用的方法 Mark 起來即可!
※若您想使用其他之数据库,只要將以上模块稍作修改即可!


在菜单中加入图标 -VB资料 在程序中调用关闭Windows对话框-VB资料 在任务栏中显示无边框窗体的图标-VB资料 在系统菜单上添加自定义菜单项 -VB资料 在运行时动态生成多个相同的控件?-VB资料 在最小化状态时提供提示 -VB资料 暂时禁止窗口更新-VB资料 VB怎样得到文本框(TextBox)中的文本行数? 制造出透明的Form -VB资料 VB制作半透明窗体和形状不规则的窗体 VB制作方向按钮 VB制作渐变的窗口背景色 字体闪烁 -VB资料 自动改变控件大小-VB资料 自制IE风格按纽控件-VB资料 VB6.0中通过MSChart控件调用数据库 用VB6实现动态增减控件 ActiveX控件的创建-VB资料 ADO控件和DATA控件的冲突(不能共存)的解决方法-VB资料 Combo的自动查询技术 -VB资料 DirectX7.0使用心得(1) -VB资料 DirectX7.0使用心得(2) -VB资料 DirectX7.0使用心得(3) -VB资料 FSO对象模型在VB中的应用 MsComm 控件的文字传输范例 -VB资料 Office或IE4风格的ToolBar -VB资料 Regsvr32.exe注册控件的具体用法-VB资料 TextBox的自动调节 -VB资料 TextBox实现打印机效果 -VB资料 TreeView的基本操作-VB资料 VB5中DBGRID控件在VB6中使用 adsi建的邮箱,用outlook连接exchange必须输入username@domain.com格式的帐号才能登陆,请问怎么解决? 如何实现一个任意长度的C++整型类? 一个关于ADO连接,打印报表的问题. Microsoft Windows 2000 Professional 如何安装终端服务? 从注册表中读信息 100分!!为什么我做完fla文件后,生成影片时FLASH自动提示把我的文字打散,请问各位怎么解决??? Microsoft Windows 2000 Professional 如何安装终端服务? 一个奇怪的现象:Delete键在TextBox中失灵 怎么样屏蔽键盘上的print screen键? 为什么一调用office就死机? 谁有Ide.sys、cdrom.sys这两个文件和两个文件的原代码啊! 请问: 当J2EE开发C/S模式时,我的C端要不要装J2EE平台啊?(在线等) 局域网中,一些电脑可以PING通局域网内所以电脑的IP,但是网站邻居就是无法查找到? 委托中要求进行参数传递,应该怎样做,谁帮帮我? *>>--谁做过日历以及日历相关-- 如何卸载windows 2003 server,再重新安装windows 2000 server? 请问将Interbase中两个Varchar型字段连接起来的查询语句怎么写? 域名设置问题?? 为什么微波和X光能穿透介质,而波长介于它们之间的可见光恰不能? 生成EXE问题! Transaction Data Module 和 ADO 问题 寻求DOMINO SERVER 得配置资料!如HTTP的配置等等。 怎么创建dll?创建dll时参数应该怎么定义?创建后怎么调用?在哪儿声明? 熟悉ADODB.Stream的大侠看过来! 在WIN32 CONSOLE APPLICATION 建立的程序中为什么不能使用CString 类 数据库恢复的简单问题 谁用过jfreereport或jaxperreport做过报表?各位大哥帮忙呀!!!--就20分了 紧急高分求助:怎么在windows的user control中加一个参数 [求助]怎样让工程加入Data Report ,菜单 工程 里没有添加Data Report 的呀? 倡导成产手机爱好者与自由开发者协会 CPU拨了会不会叫的啊。内存和显卡拨了不会有声音,一定是主板有问题吗? 我的程序都关闭了,可是为什么进程还存在,我用了多线程的? 呼救高手--急:在线等待帮忙--怪异啊! 急!在线等 浏览器关闭事件----急,谢谢 各位大虾帮帮忙!!!必有重谢!!! 求助二维数组排序问题? 那里有Delphi下载啊? 下面的代码总出错 如果指针被阉割掉以后... 哪位提供一点关于开发小型dbms系统的odbc驱动程序的资料啊? 探讨DMBS??? 关于数据库操作一问? ***禁止重复登录?*** cout流的执行方式问题!请高手回答!不胜感激!!! 欢迎广临(API打印)CDC if (know && 高手) 值得讨论 else 有收获的; 在线等候 咋再MS SQL中实现这个查询? 通过ADSI验证用户登录的问题。 寻找控制面板编程方法 怎么判断类是否存在? 能通过网络修改其它机器的IP地址么?请教各位大侠,在线等!!! 继发性主动转运就是协同运输吗? 煜这个字念什么 膝跳反应需要哪些细胞参与?要准确的名字 君子是什么样的人用古诗句表达 徜徉 历历在目 心旷神怡 潜移默化 裨益选三个词造句 什么叫冷血? 鸽子抵抗寒冷的能力强吗? 我为什么这么冷血我发现我是个冷血的人,从我很小很小的时候就是很冷血的人.那时,我就拒绝父母亲人的爱,不许他们亲我也不许他们抱我. 后来8岁的时候,他们去了很远的地方,有了妹妹. 把 鸽子是靠什么归巢的? 冷血的意思是什么? 煜是什么字 两岸产业合作谋新局“有保有放”俄大胆盗贼偷警察大楼 部分武器及文件日媒:安倍上任后已打13次高尔夫 展德国拒绝为斯诺登提供庇护 避免影响德朴槿惠恐无意与安倍会晤 日方宣称极度美参众两院大佬不宽恕斯诺登 将派“安印尼巴厘岛男子咖啡地中发现2000多美国新泽西一商场发生枪击事件 暂无人英内阁会议为防监听禁用iPad 高官美新泽西州商场发生枪击 在场民众描述美国西部山区蕴含创业潜力 或成下一个【“菜鸟理财”产品评测】\"悟空理财詹宁斯不满科比2K排名:才第五?一张图解释中国经济增速下滑之谜:私企股市将更活跃、房地产要刺激?政治局会家庭简易版外酥里香的水果派SP mini 智能插座秒杀 & 试长沙雨花筑巢引凤 一日揽金300亿肉松蛋糕卷生男生女与遗传无关 生男生女影响因素“光明正大”手抄佛经赴印展启动仪式广做别人生命中的\"Plus\"
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘