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

主題:如何动态新增、移除 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 起來即可!
※若您想使用其他之数据库,只要將以上模块稍作修改即可!


函数式编程语言F#:基于CLR的另一个头等编程语言 编程获取Google PR值方法集锦 第一个F#入门程序Hello world 在F#中将函数作为一等对象的值 PHP获取Google PR值 ×××请教高手们能否把slider控件的颜色设置为透明或其它的颜色?(请给出代码)谢谢! BCB 阵营,何去何从? 我问个问题!有关confirm的!看见请急回,在线等! 这个小程序为何不能实现预期功能? jps是什么?哪里有介绍它的网站? 一道用三元组来表示稀疏矩阵问题(用C++描述) 此ADSL猫是否带路由功能? 请教高手.....帮忙看看.....急救.......... 关于xp下SQL server的问题 一个n维非零行向量乘以一个n维非零列向量得到的矩阵 那么一个矩阵A=0,和一个矩阵A是一个0向量,这俩 设a是n维非零实列向量,矩阵A=E+aaT(a的转 什么情况下矩阵的转置矩阵等于其逆矩阵,能证明下吗? 逆矩阵等于转置矩阵是否仅当A为正交矩阵的时候这个命 设A,B为n阶矩阵,且A,B为对称阵,证明 B的转 怎样证明n阶实矩阵退化则A乘以A的转置是半正定矩阵 设A为实对称矩阵,且IAI<0,试证 存在非零n维 α,β均是n维列向量,则行列式/α×β的转置+β× 外媒:斯诺登握有美国针对他国情报活动英国“白寡妇”曾住南非豪华产房 水中德国男子将12名亲友关在咖啡馆 与警埃及性侵泛滥 美民间组织绘制“性侵地韩陆军主力直升机因修理零件紧缺无法正揭秘:周恩来朱德曾与哪位中共元老“桃骑车人肇事撞死行人教师要求关WiFi是骡子是马 今晚见分晓今日热偶像时代女子俱乐部殷地安联邦共和国神帝传人茅山术志徽州旅游门源旅游西沙群岛旅游贺州旅游南平旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘