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

VB如何动态新增、移除 ODBC DSN?

HTML文档下载 WORD文档下载 PDF文档下载
VB如何动态新增、移除 ODBC DSN?
版本: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 起來即可!
※若您想使用其他之数据库,只要將以上模块稍作修改即可!

当数据中心遭遇污水 微软新能源数据中心的诞生 2012vForum:更加注重开发者 腾讯赵伟:Hive在腾讯分布式数据仓库的实践 Apple将在2013年启动香港数据中心的建设 顶级域名扩张受阻:ICANN透露部分域名存争议 硅谷创业教父Paul Graham:如何获得创业好点子? GDC2012特别报道:中西方游戏开发思想在这里融合 应用示例和对象是编程的未来吗? 为什么2012年HTML5发展远未达预期 当程序不再工作时,程序员说 独立游戏开发者易犯的9大致命错误 “Do Not Track”的前世今生 《Warcraft是怎样炼成的(三)》:从Demo到游戏 无限强大的超级马里奥AI 以Google第二代数据库产品MegaStore为理论模式 探索HBase系统 传Google明年推Chrome OS触摸屏上网本 下载自己过去的Tweets?用户准备好了吗? 微软任命研究部门新副总裁 负责北京等实验室 欧朋首席标准官:HTML5将在2014年成熟 开发利器:对游戏开发者最具价值的5类iOS应用 专访前IE浏览器内核研发工程师,带你深入了解IE10 Windows 8市场接纳速度慢于Windows 7 别只看下载量!“用户留存率”才是关键! 预计2020年出现百亿亿次级超级计算机 Google数据中心PUE的秘密 一个传奇:有个人不断赢得世界算法冠军 音乐能力开放平台合作探索之旅 社交网络海外营销技巧及工具实战 大数据谬误 —— 为什么我们需要收集更多的数据 传苹果地图负责人Rich Williamson遭解雇? 一个月:Windows 8授权许可已破四千万 printf的问题,快速结帖 明天去新公司上班,散分!! 关于以前asp中的内置函数 想请问各位朋友一个问题 高分 如何择书与读书? mail发送问题 不知大家有没有测试过,似乎ADO的速度比DAO慢很多! 想请问各位朋友一个问题 想请问各位朋友一个问题 清那位高手指点一下 上海人,请讲信誉,我已忍无可忍了(放分) 修改计算机的名字导致SQL7.0不能启动,请问有什么修补的方法而不用重新安装SQL? c++ primer 候洁译与潘爱民译那个好些?? 为什么我的机会突然黑屏,但主机其实又没有关呢? 各位大虾,我是菜鸟,请问? 客户端的linux怎么才能通过域和代理的验证?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 菜鸟问题:PHP中的变量使用前一定得声明吗?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 用光驱看电影时经常说“显示器刷新率超出范围”,然后就只能重启,这是怎么回事? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 请问哪里可以免费下载到linux的源代码啊?谢谢! 如何择书与读书? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 我想转行到计算机软件,您有什么建议呢? 各位高手,看看这个贴!!谢谢 菜鸟问题:请教red hat下用.iso的安装镜像文件升级软件包的问题 这个中秋霉到家了,看看还有没有比我更霉的,同时祝愿自己能快点度过难关好起来!!!!!!!!!! 帮忙看看这个SQL语句什么地方错了? 此上机题的程序代码应该怎么写 想找个unix高手,有没有啊? 那里有java的帮助手册下载?类似于萎软的msdn & 0xFFF0是什么意思 银行存钱手续费问题 计算机网络——熊桂喜 译 INPUT如何用图片作背景? 谁能给我贴一个 Regular 动态 mfc-dll的例子! 函数怎样调用? 在线的各位高手,请问哪里可以下到SYBASE11.9.2安装程序? EJB-QL问题,怎么使用模糊查询LIKE? 请进 为什么我装了声卡驱动程序后,只能听到声音,却说不了话? rh9中用户目录下的.profile为什么不起作用? 我是专学PL/SQL编程的,但是我觉得这个不像是真正意义的编程! 大家进来看看吧! VC6下如何向Oracle中添加和读取BLOB型的数据? 一个关于Delphi6和Delphi7的问题 请问怎么知道C# MSDN 里的每一个类,每一个方法是做什么用的? 问题挺多的?请不吝赐教!都是小问题! 输入光标的移动问题 菜鸟请教:请问如何打包成jar和jad文件? 强人所难什么意思? 化学溶液题...晕了...在30℃ 时,A、B两烧杯中分别盛有100g、150g硝酸钾饱和溶液,要使两杯溶液析出相同质量的硝酸钾晶体,下列做法可行的是A.各蒸发10g水并恢复至原温度B.同时降温至某一温度C. 荀读什么 荀怎么读? 荀读什么音 地动仪的结构地动仪的制作结构, 船在静水中的速度为a千米/时,水流速的是b千米/时.该船顺流航行的速度是多少千米一时?逆流航行是多少千米一时?若一悬浮物从甲码头漂流到乙码头用了t小时,则甲乙两码头相距多少千米? 天文望远镜中的月亮是什么模样的呀!可以清楚看见月球上的一粒石头么? 熟语强人所难是什么意思 我不喜欢强人所难,啥意思 强人所难的强的意思?是勉强还是强迫? 越南网络活跃人士因散播不利于政府消息美媒称美无人机炸死索马里青年党高官福建莆田仙游县与福州永泰县交界发生4民建提议京籍准入实行积分制 取代户籍女大学生进企业终极面试:因吃饭未喝白福建仙游县永泰县交界发4.3级地震 北京一村主任拉选票 广播号召村民挖断福建启III级地震应急响应 已派驻工英窃听丑闻案开庭被告否认指控 最高或美国主持人就“杀光中国人”节目道歉党报谈英国“窃听门”丑闻:严格监管不新疆沙湾县:爱心情暖西藏沙雅县法院组织干警学习《人民法院警示云南摇滚春晚即将让乐迷们噪起来中纪委:别炒了,发生了什么第一时间告新疆玛纳斯县信用社提早发放春耕贷款湖北:荆州市副市长马秋平、恩施州副州西藏一厅级干部被依法逮捕吉林发布一氧化碳中毒气象条件黄色预警西藏一厅级干部被依法逮捕湖北:荆州市副市长马秋平、恩施州副州北京破获冒充病人在繁华路段乞讨诈骗团无限之非强制性任务异界山神巫灵传奇盟主无敌灌水帮江湖倚楼听风雨大唐烈1621穿明落翼之城超级分裂盗鼎三国南山公园旅游宝镜岩旅游盆景滩旅游火花海旅游树正群海旅游老虎海旅游诺日朗瀑布旅游日则沟旅游历史博物馆旅游开封铁塔公园旅游哈尔滨文庙旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘