请帮帮忙 
先判断连接是否存在
不存在则代码创建odbc的连接

解决方案 »

  1.   

    我给你拷贝一个,主要是对注册表的读写
    以下是在程序中动态创建ODBC的DSN数据源代码: 
    procedure TCreateODBCDSNfrm.CreateDSNBtnClick(Sender: TObject); 
    var 
      registerTemp : TRegistry; 
      bData : array[ 0..0 ] of byte; 
    begin 
      registerTemp := TRegistry.Create; 
      //建立一个Registry实例 
      with registerTemp do 
           begin 
          RootKey:=HKEY_LOCAL_MACHINE; 
          //设置根键值为HKEY_LOCAL_MACHINE 
          //找到Software\ODBC\ODBC.INI\ODBC Data Sources 
          if OpenKey('Software\ODBC\ODBC.INI 
          \ODBC Data Sources',True) then 
         begin //注册一个DSN名称 
         WriteString( 'MyAccess', 'Microsoft 
          Access Driver (*.mdb)' ); 
               end 
             else 
               begin//创建键值失败 
         memo1.lines.add('增加ODBC数据源失败'); 
         exit; 
          end; 
          CloseKey; 
    //找到或创建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;