成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在DELPHI程序中動態設置ODBC數據源

運維 數據庫運維
在利用ODBC訪問數據庫時,通常的方法時是在ODBC管理面板中設置一個ODBC系統數據源(系統DSN),然后在DBD中或在程序中設置一個數據庫別名(Alias)對應該DSN,這樣就可以如愿以償地操作數據庫了. 本文介紹了在程序中動態設置系統DSN的方法,希望會對讀者有所幫助。

ODBC數據庫驅動程序設置DSN的秘密在注冊表中,所以要想動態地設置ODBC數據源,我們首先就要從注冊表開始。打開注冊表,到HKEY_LOCAL_MACHINE\Software\ODBC看一看它的設置。首先來看看系統中已安裝的ODBC數據庫驅動程序.在HKEY_LOCAL_MACHINE\Software\ODBC\ODBCInst.INI中,存放著已經安裝了的ODBC數據庫驅動程序的信息,從這里可以查到已安裝的ODBC數據庫驅動程序對應的DLL文件等信息.在ODBCInst.INI\ODBC Drivers的各個鍵值中,鍵名是驅動程序名稱(如Microsoft Access Driver(*.mdb)),鍵值為“Installed”,表示驅動程序已安裝。

在ODBCInst.INI\DriverName(DriverName為一個驅動程序名稱,如Microsoft Access Driver(*.mdb))中,有驅動程序的詳細信息,我們主要從這里獲得ODBC驅動程序對應的DLL文件的路徑和文件名,即鍵名Driver的鍵值,一般為"C:\WINDOWS\SYSTEM\FileName.DLL".然后來看系統DSN的注冊信息,在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI中,存放著系統DSN的注冊信息,我們在ODBC管理面板設置的DSN參數就在這里。

下面來看看創建一個ODBC系統DSN的步驟,即我們在ODBC管理面板中完成參數設置后,ODBC管理程序是怎么在注冊表中注冊DSN信息的.以創建一個名稱為MyAccess的Ms Access97類型的系統DSN為例,我們指定的參數主要有數據庫類型(Microsoft Access Driver(*.mdb))、數據源名稱(MyAccess)、數據源描述(我的ACCESS)、數據庫路徑(C:\Inetpub\wwwroot\Test.mdb),其它參數如用戶名稱、用戶密碼、獨占、只讀、系統數據庫、默認目錄、緩沖區大小、掃描行數、頁超時等采用系統缺省參數.這時,注冊系統DSN一般應有以下幾個步驟:

1.在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources中增加一個字符串鍵值,為MyAccess = Microsoft Access Driver(*.mdb),其中分別為數據源名稱和數據庫類型.這是在注冊表中注冊一個系統DSN名稱.

2.在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI中創建一個子鍵(SubKey)MyAccess,即創建一個鍵為HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\MyAccess,然后在其下創建一些鍵值,詳細描述一個系統DSN的配置信息,主要信息有([]中的內容為筆者注釋):

 

  1. DBQ=C:\Inetpub\wwwroot\Test.mdb [字符串,表示數據庫路徑]  
  2.  
  3. Description=我的ACCESS [字符串,表示數據庫描述]  
  4.  
  5. Driver=C:\PWIN98\System\odbcjt32.dll [字符串,表示驅動程序,可見ODBCINST.INI]  
  6.  
  7. DriverId=0x00000019(25) [數字,表示驅動程序標識,不能改變]  
  8.  
  9. FIL=Ms Access; [字符串,可能與過濾Filter有關]  
  10.  
  11. SafeTransaction=0x00000000 [數字,可能表示支持事務性操作的個數]  
  12.  
  13. UID="" [字符串,表示用戶名稱,此處為空字符串] 

 

3.在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\MyAccess中創建一個子鍵(SubKey)Engines,再在其下創建子鍵(SubKey)Jet,即創建一個鍵為HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\MyAccess\Engines\Jet,然后在其下創建一些鍵值,詳細描述一個系統DSN的數據庫引擎配置信息,主要信息有([]中的內容為筆者注釋):

 

  1. ImplicitCommitSync=Yes [字符串,可能表示是否立即反映數據修改]  
  2.  
  3. MaxBufferSize=0x00000200(512) [數字,表示緩沖區大小]  
  4.  
  5. PageTimeout=0x00000005(5) [數字,表示頁超時]  
  6.  
  7. Threads=0x00000003(3) [數字,可能表示支持的***線程數目]  
  8.  
  9. UserCommitSync=Yes [字符串,可能表示是否立即將數據修改反映到用戶] 

 

以上是建立一個系統DSN的基本信息(其它信息如選項或高級選項等信息也在這里設置,只不過因采用默認信息,注冊表里沒有列出),我們在程序中按上述步驟操作注冊表,同樣也能增加一個系統DSN或修改其配置.

#p#

在下面的例子程序中,將按以上步驟建立一個系統DSN,請注意程序中的注釋.

{*******************************************************

在本程序中,創建一個ODBC系統數據源(DSN),

數據源名稱:MyAccess 數據源描述:新數據源

數據庫類型:ACCESS97

對應數據庫:C:\Inetpub\wwwroot\test.mdb

*******************************************************}

{ 注意應在USES語句中包含Registry }

 

  1. procedure TForm1.Button1Click(Sender: TObject);  
  2.  
  3. var  
  4.  
  5. registerTemp : TRegistry;  
  6.  
  7. bData : array[ 0..0 ] of byte;  
  8.  
  9. begin  
  10.  
  11. registerTemp :TRegistry.Create; //建立一個Registry實例  
  12.  
  13. with registerTemp do  
  14.  
  15. begin  
  16.  
  17. RootKey:=HKEY_LOCAL_MACHINE;//設置根鍵值為HKEY_LOCAL_MACHINE  
  18.  
  19. //找到Software\ODBC\ODBC.INI\ODBC Data Sources  
  20.  
  21. if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then  
  22.  
  23. begin //注冊一個DSN名稱  
  24.  
  25. WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );  
  26.  
  27. end  
  28.  
  29. else  
  30.  
  31. begin//創建鍵值失敗  
  32.  
  33. memo1.lines.add('增加ODBC數據源失敗');  
  34.  
  35. exit;  
  36.  
  37. end;  
  38.  
  39. CloseKey;  
  40.  
  41. //找到或創建Software\ODBC\ODBC.INI\MyAccess,寫入DSN配置信息  
  42.  
  43. if OpenKey('Software\ODBC\ODBC.INI\MyAccess',True) then  
  44.  
  45. begin  
  46.  
  47. WriteString( 'DBQ', 'C:\inetpub\wwwroot\test.mdb' );//數據庫目錄  
  48.  
  49. WriteString( 'Description', '我的新數據源' );//數據源描述  
  50.  
  51. WriteString( 'Driver', 'C:\PWIN98\SYSTEM\odbcjt32.dll' );//驅動程序DLL文件  
  52.  
  53. WriteInteger( 'DriverId', 25 );//驅動程序標識  
  54.  
  55. WriteString( 'FIL', 'Ms Access;' );//Filter依據  
  56.  
  57. WriteInteger( 'SafeTransaction', 0 );//支持的事務操作數目  
  58.  
  59. WriteString( 'UID', '' );//用戶名稱  
  60.  
  61. bData[0] :0;  
  62.  
  63. WriteBinaryData( 'Exclusive', bData, 1 );//非獨占方式  
  64.  
  65. WriteBinaryData( 'ReadOnly', bData, 1 );//非只讀方式  
  66.  
  67. end  
  68.  
  69. else//創建鍵值失敗  
  70.  
  71. begin  
  72.  
  73. memo1.lines.add('增加ODBC數據源失敗');  
  74.  
  75. exit;  
  76.  
  77. end;  
  78.  
  79. CloseKey;  
  80.  
  81. //找到或創建Software\ODBC\ODBC.INI\MyAccess\Engines\Jet  
  82.  
  83. //寫入DSN數據庫引擎配置信息  
  84.  
  85. if OpenKey('Software\ODBC\ODBC.INI\MyAccess\Engines\Jet',True) then  
  86.  
  87. begin  
  88.  
  89. WriteString( 'ImplicitCommitSync', 'Yes' );  
  90.  
  91. WriteInteger( 'MaxBufferSize', 512 );//緩沖區大小  
  92.  
  93. WriteInteger( 'PageTimeout', 10 );//頁超時  
  94.  
  95. WriteInteger( 'Threads', 3 );//支持的線程數目  
  96.  
  97. WriteString( 'UserCommitSync', 'Yes' );  
  98.  
  99. end  
  100.  
  101. else//創建鍵值失敗  
  102.  
  103. begin  
  104.  
  105. memo1.lines.add('增加ODBC數據源失敗');  
  106.  
  107. exit;  
  108.  
  109. end;  
  110.  
  111. CloseKey;  
  112.  
  113. memo1.lines.add('增加新ODBC數據源成功');  
  114.  
  115. Free;  
  116.  
  117. end;  
  118.  
  119. end; 

 

通過上面的代碼,我們就能夠在程序中動態設置ODBC數據源了。

【編輯推薦】

  1. C#利用ODP.net連接Oracle數據庫
  2. 怎樣把數據庫連接字符串存入注冊表中
  3. 利用Sql Server將Excel中的數據導入Oracle
  4. ASP通過Oracle Object for OLE對Oracle查詢
責任編輯:趙鵬 來源: 設計前沿
相關推薦

2010-12-27 09:59:11

ODBC數據源

2010-07-26 13:18:20

SQL Server

2010-07-23 13:17:05

SQL Server

2011-04-06 13:40:48

Delphi

2023-07-29 11:54:44

KuberneteNFS

2021-03-10 19:01:02

SQL數據源

2022-05-10 10:43:35

數據源動態切換Spring

2025-01-17 09:11:51

2009-06-15 13:24:46

JBoss數據源

2020-11-24 09:56:12

數據源讀寫分離

2009-07-28 14:22:05

數據源控件ASP.NET

2009-07-07 10:47:58

Servlet開發環境

2024-04-30 09:17:06

SpringBootMybatis動態數據源

2017-09-04 14:52:51

Tomcat線程數據源

2024-03-28 09:46:50

2023-11-27 09:16:53

Python數據源類型

2009-06-16 16:20:58

JBoss4配置Inf

2010-05-14 15:32:51

配置MySQL

2017-06-14 23:42:27

大數據數據源架構

2011-05-18 10:42:48

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一区二区三区在线播放 | 精品中文字幕一区二区 | 亚洲国产精品99久久久久久久久 | 超碰精品在线观看 | www.99热.com| 亚洲一区毛片 | 国产一区二区观看 | 日韩不卡一区二区 | 久久精品一二三影院 | www.国产91 | 国产精品一区二区三区在线 | 在线播放一区二区三区 | 成人伊人网 | 成人国产精品 | 国产999精品久久久 精品三级在线观看 | 国产精品久久久久久久久久久久久久 | 97av在线| caoporn国产精品免费公开 | 亚洲一区高清 | 99re在线视频 | 亚洲高清在线 | 久草综合在线 | 国产精品久久久久av | 欧美一区二区在线播放 | 精品福利一区二区三区 | 精品在线一区二区三区 | 午夜影院在线观看 | 国产成人免费视频网站视频社区 | 一区二区在线不卡 | 中文字幕第十页 | av中文网| 精品国产18久久久久久二百 | 国产一区二区精品 | 久久久xxx| 亚洲精品丝袜日韩 | 欧美精品片| 日韩欧美国产一区二区三区 | 欧美另类视频 | 一区二区三区在线电影 | 国产成人在线播放 | 欧美一区二 |