zoukankan      html  css  js  c++  java
  • 在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中都能用到的.

  • 相关阅读:
    【函数】wm_concat包的订制
    【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
    【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章
    【故障处理】队列等待之TX
    【转载】TX
    【转载】Linux磁盘管理:LVM逻辑卷管理
    【索引】Oracle之不可见索引和虚拟索引的比对
    小麦苗微信公众号文章链接地址
    Oracle 11g新特性direct path read引发的系统停运故障诊断处理
    常识之外:全表扫描为何产生大量 db file sequential read 单块读?
  • 原文地址:https://www.cnblogs.com/phyking/p/4456674.html
Copyright © 2011-2022 走看看