在DELPHI程序中动态设置ODBC数据源(2/2)

//找到或创建Software\ODBC\ODBC.INI

 \MyAccess,写入DSN配置信息

 if OpenKey(Software\ODBC\ODBC.INI

 \MyAccess,True) then

 begin

 WriteString( DBQ, C:\inetpub\wwwroot

 \test.mdb );//数据库目录

 WriteString( Description, 

 我的新数据源 );//数据源描述

 WriteString( Driver, C:\PWIN98\SYSTEM\

 odbcjt32.dll );//驱动程序DLL文件

 WriteInteger( DriverId, 25 );

 //驱动程序标识

 WriteString( FIL, Ms Access; );

 //Filter依据

 WriteInteger( SafeTransaction, 0 );

 //支持的事务操作数目

 WriteString( UID,  );//用户名称

 bData[0] := 0;

 WriteBinaryData( Exclusive, bData, 1 );

 //非独占方式

 WriteBinaryData( ReadOnly, bData, 1 );

 //非只读方式

 end

 else//创建键值失败

 begin

                  memo1.lines.add(增加ODBC数据源失败);

                  exit;

 end;

 CloseKey;

 

//找到或创建Software\ODBC\ODBC.INI

\MyAccess\Engines\Jet

 //写入DSN数据库引擎配置信息

 if OpenKey(Software\ODBC\ODBC.INI

 \MyAccess\Engines\Jet,True) then

 begin

 WriteString( ImplicitCommitSync, Yes );

 WriteInteger( MaxBufferSize, 512 );//缓冲区大小

 WriteInteger( PageTimeout, 10 );//页超时

 WriteInteger( Threads, 3 );//支持的线程数目

 WriteString( UserCommitSync, Yes );

 end

 else//创建键值失败

 begin

                  memo1.lines.add(增加ODBC数据源失败);

                  exit;

 end;

 CloseKey;

 

 memo1.lines.add(增加新ODBC数据源成功);

 

 Free;

 end;

end;

---- 以上程序在PWIN98+DELPHI3.0下调试通过.

---- 下面是创建常见数据库类型的DSN需要设置的信息([]为注释内容,除特殊注释外,各参数可见前面说明):

---- 1.Access(Microsoft Access Driver(*.mdb))

         DBQ、Description、Driver[odbcjt32.dll]、

 DriverID[25]、FIL[Ms Access;]、

         SafeTransaction[默认为0]、UID[默认为空]、

         Engines\Jet\ImplicitCommitSync[默认为Yes]、

 Engines\Jet\MaxBufferSize[默认512]、

         Engines\Jet\PageTimeout[默认为512]、

 Engines\Jet\Threads[默认为3]、

         Engines\Jet\UserCommitSync[默认为Yes]

         可选设置:SystemDb[字符串,系统数据库的路径]、

          ReadOnly[二进制,是否以只读方式打开,1为是,默认为0]、

          Exclusive[二进制,是否以独占方式打开,1为是,默认为0]、

          PWD[字符串,用户密码]

---- 2.EXCEL(Microsoft Excel Driver(*.xls))

         DBQ[Excel97(=path\xxx.xls)、5.0/7.0

 (=path\xxx.xls)、4.0(=path)、3.0(=path)]、

         Description、Driver[odbcjt32.dll]、

         DefaultDir[Excel97(< >DBQ)、5.0/7.0

 (< >DBQ)、4.0(=DBQ)、3.0(=DBQ)]、

         DriverID[790(Excel97)、22(5.0/7.0)、278(4.0)、534(3.0)]、

         FIL[Excel5.0;]、ReadOnly、SafeTransaction、UID、

         Engines\Excel\ImplicitCommitSync、

 Engines\Excel\MaxScanRows[数字,扫描行数,默认为8]、

         Engines\Excel\Threads、Engines\Excel\UserCommitSync、

         Engines\Excel\FirstRowHasName[二进制,第一行是否是域名,

 1表示是,默认为1]

---- 注: Excel97和Excel7.0/5.0的DBQ对应一个XLS文件,而Excel4.0和Excel3.0则对应一个目录;DefaultDir对应一个目录,在Excel97和Excel7.0/5.0中是DBQ所对应的路径,而在Excel4.0和Excel3.0下则与DBQ相同;各个版本的DriverID不同.

---- 3.dBase(Microsoft dBase Driver(*.dbf))

         DefaultDir[字符串,数据库文件所在目录]、

 Description、Driver[odbcjt32.dll]、

         DriverID[277(IV)、533(5.0)]、

 FIL[dbase III;]、SafeTransaction、UID、

         Engines\Xbase\ImplicitCommitSync、

         Engines\Xbase\Collating[字符串,排序依据,

 可为ASCII、International、Norwegian-Danish、

                 Swedish-Finnish]、

         Engines\Xbase\Deleted[二进制,是否不显示

 被软删除的记录,0表示显示,默认为1]、

         Engines\Xbase\PageTimeout[默认为600]、

 Engines\Xbase\UserCommitSync、

         Engines\Xbase\Threads、Engines\Xbase

 \Statistics[二进制,是否用大约的行数,1为是,默认0]

         注:(dBaseIV和dBase5.0两个版本的DriverId有不同)

---- 4.Foxpro(Microsoft Foxpro Driver(*.dbf))

         DefaultDir[数据库文件所在目录]、

 Description、Driver[odbcjt32.dll]、

         DriverID[536(2.6)、280(2.5)]、

 FIL[Foxpro 2.0;]、SafeTransaction、UID、

         Engines\Xbase\Collating[字符串,

 排序依据,可为ASCII、International]、

         Engines\Xbase\Deleted[二进制,是否不显示

 被软删除的记录,0表示显示,默认为1]、

         Engines\Xbase\PageTimeout[默认为600]、

 Engines\Xbase\UserCommitSync、

         Engines\Xbase\Threads、Engines\Xbase

 \Statistics[二进制,是否用大约的行数,1为是,默认0]

         注:(Foxpro2.5和Foxpro2.6两个版本的DriverId有不同)

---- 把上面程序做成一个COM或ActiveX控件吧,在很多高级程序设计语言如DELPHI、C++Buider、VB、VC、PB中都能用到的.

posted @ 2012-05-18 16:36  Phyking  阅读(394)  评论(0编辑  收藏  举报