捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
动态创建ODBC连接的演示程序
关键字:动态 创建 ODBC 数据库 连接
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2005/5/10
发布者:yang_huafeng 发布时间:2005/5/10
编辑器:DELPHI7 语  种:简体中文
分 类:数据库 下载浏览:1925/12431
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
该软件目前只提供了SQLSERVER、DB2、ACCESS三种数据库的ODBC创建。
用到的第三方控件有VCL SKIN,在盒子里有下载的。
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
SQL查询插件修改版 (ODBC连接)
yang_huafeng 2005/5/16 下+1089/浏+8639 评+1
动态创建ODBC连接的演示程序
yang_huafeng 2005/5/10 下+1925/浏+12432 评+7
SQL查询插件 (ODBC连接)
yang_huafeng 2005/5/1 下+996/浏+8132 评+4
相关评论
共有评论7条 当前显示最后6条评论
blowfish 2005/5/19 10:01:41
我已经,修改了你的程序,添加了oracle数据源的添加办法,其实和sql server差别不是很大。代码如下,希望你们也更新。呵呵,我比较喜欢这个论坛。
function createOracleDSN(const FDSN,FServer,Fuser:string):boolean;
var
RegisterTemp:TRegistry;
s:string;
begin
RegisterTemp:=Tregistry.Create;

RegisterTemp.RootKey:=HKEY_LOCAL_MACHINE;

//首先判断此DSN是否已经存在,如在,则不用继续下去
if registertemp.OpenKey('Software\ODBC\ODBC.INI\' + FDSN, False) then
   begin
        RegisterTemp.CloseKey;
        Result := True;
        RegisterTemp.Free;
        exit;
  end;
RegisterTemp.CloseKey;
//判断Oracle的驱动程序是否已经安装
if RegisterTemp.OpenKey('Software\ODBC\ODBCINST.INI\ODBC Drivers', False) then
  begin
        s := RegisterTemp.ReadString('Oracle ODBC Driver');
        if UpperCase(S) <> 'INSTALLED' then
          begin
          RegisterTemp.CloseKey;
          Result := False;
          RegisterTemp.Free;
          exit;
          end;
  end
  else
  begin
    RegisterTemp.CloseKey;
    Result := True;
    RegisterTemp.Free;
    exit;
  end;
  RegisterTemp.CloseKey;
//寻找oracle的驱动程序路径
if RegisterTemp.OpenKey('Software\ODBC\ODBCINST.INI\Oracle ODBC Driver', False) then
begin
  s := RegisterTemp.ReadString('Driver');
  if S = ' then
  begin
    RegisterTemp.CloseKey;
    Result := False;
    RegisterTemp.Free;
    exit;
  end;
end
else
begin
  RegisterTemp.CloseKey;
  Result := True;
  RegisterTemp.Free;
  exit;
end;
RegisterTemp.CloseKey;
//注册一个DSN名称
if RegisterTemp.OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources', True) then
  RegisterTemp.WriteString(FDSN, 'Oracle ODBC Driver')
else
begin
  RegisterTemp.CloseKey;
  Result := True;
  RegisterTemp.Free;
  exit;
end;
RegisterTemp.CloseKey;
if RegisterTemp.OpenKey('Software\ODBC\ODBC.INI\' + FDSN, True) then
begin
  RegisterTemp.WriteString('Driver', S);
  RegisterTemp.WriteString('UserID', FUser);
  RegisterTemp.WriteString('Server', FServer);
  RegisterTemp.WriteString('Application Attributes','T');
  RegisterTemp.WriteString('Attributes','W');
  RegisterTemp.WriteString('CloseCursor','F');
  RegisterTemp.WriteString('Description',');
  RegisterTemp.WriteString('DisableMTS','F');
  RegisterTemp.WriteString('Failover','T');
  RegisterTemp.WriteString('FailoverDelay','10');
  RegisterTemp.WriteString('FailoverRetryCount','10');
  RegisterTemp.WriteString('Lobs','T');
  RegisterTemp.WriteString('Longs','F');
  RegisterTemp.WriteString('PrefetchCount','10');
  RegisterTemp.WriteString('QueryTimeout','T');
  RegisterTemp.WriteString('ResultSets','T');
  RegisterTemp.WriteString('Translation DLL',');
  RegisterTemp.WriteString('Translation Option','0');
  
  Result := True;
end
else
begin
  RegisterTemp.CloseKey;
  Result := False;
  RegisterTemp.Free;
  exit;
end;
RegisterTemp.CloseKey;
RegisterTemp.Free;


end;
yang_huafeng 2005/5/19 12:50:57
谢谢blowfish的大力支持,我把代码加上去,可惜的是我没测试环境。
blowfish 2005/5/19 14:50:42
我已经测试了,呵呵,正常ing。
flylg991 2005/8/28 21:01:49
var
  pFn: TSQLConfigDataSource;
  hLib: LongWord;
  strDriver: string;
  strHome: string;
  strAttr: string;
  strFile: string;
  fResult: BOOL;
  ModName: array[0..MAX_PATH] of Char;
  srInfo : TSearchRec;
begin
  Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName) );
  strHome := ModName;
  while ( strHome[length(strHome)] <> '\' ) do
    Delete( strHome, length(strHome), 1 );
  strFile := strHome + 'TestData.MDB';   // Test Access Rights (Axes = Access)
  hLib := LoadLibrary( 'ODBCCP32.dll' );    // load from default path
  if( hLib <> NULL ) then
  begin
    @pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
    if( @pFn <> nil ) then
    begin
      // force (re-)create DSN
      strDriver := 'Microsoft Access Driver (*.mdb)';
      strAttr := Format( 'DSN=TestDSN'+#0+
          'DBQ=%s'+#0+
          'Exclusive=1'+#0+
          'Description=Test Data'+#0+#0,
          [strFile] );
      fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
      if( fResult = false ) then ShowMessage( 'Create DSN (Datasource) failed!' );

      // test/create MDB file associated with DSN
      if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
      begin
        strDriver := 'Microsoft Access Driver (*.mdb)';
        strAttr := Format( 'DSN=TestDSN'+#0+
          'DBQ=%s'+#0+
          'Exclusive=1'+#0+
          'Description=Test Data'+#0+
          'CREATE_DB="%s"'#0+#0,
          [strFile,strFile] );
        fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
        if( fResult = false ) then ShowMessage( 'Create MDB (Database file) failed!' );
      end;
      FindClose( srInfo );

      end;

    FreeLibrary( hLib );
  end
  else
  begin
    ShowMessage( 'Unable to load ODBCCP32.DLL' );
  end;
panbq 2005/10/19 22:26:37
我根据你的例子改成了INFORMIX的,,感觉不错,不是很慢。谢谢了。
daima 2009/2/13 14:46:40
flylg991、blowfish都不错,学习了。
不管是API或者注册表,写的很严谨很完整!
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号 更新RSS列表