odbc文件dsn怎么用?

youyiwuyi 2004-09-28 11:48:26
用odbc连接数据库时建数据源有三种类型:用户dsn,系统dsn,文件dsn.
有谁用过文件dsn?请赐教怎么用.

...全文
179 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisy8675 2004-09-29
類別:註冊檔 / 資料庫 / 模組 / DAO / API 編號:0170

--------------------------------------------------------------------------------

主題:如何動態新增、移除 ODBC DSN?
來源:VB Square
版本:VB6 / VB5 / VB4-32

--------------------------------------------------------------------------------


一般我們建立 Client 端 DSN 都是在使用者的機器上進入【控制台】【ODBC 資料來源管理員】去建立,但是如果我們開發的 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 起來即可!
※若您想使用其他之資料庫,只要將以上模組稍作修改即可!

回复
NewPeople 2004-09-29
在连接字符串中写FILEDSN=<文件DSN名称>
其它相同
回复
youyiwuyi 2004-09-29
没人用过吗?
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告