这是我在网上找到的一份资料:
在程序中设置ODBC的DSN
下面是我写的一个函数,供你参考。请在Uses子句中增加 registry 的引用。
const
  CreateDsnErr:TCreateDnsError =('增加ODBC数据源成功!','增加ODBC数据源失败!','没有安装SQL Server的驱动程序!','读取ODBC驱动程序失败!');
Function CreateDsn(const FDSN,FServer,FUser:String):Integer;
var
  RegisterTemp:TRegistry;
  s:string;
begin
  RegisterTemp:=TRegistry.Create;
  with RegisterTemp do
  begin
    RootKey:=HKEY_LOCAL_MACHINE;
    //首先判断此DSN是否已经存在,如在,则不用继续下去
    if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,False) then
    begin
      CloseKey;
      Result:=0;
      Free;
      exit;
    end;
    CloseKey;
    //判断SQL Server的驱动程序是否已经安装
    If OpenKey('Software\ODBC\ODBCINST.INI\ODBC Drivers',False) then
    begin
      s:=ReadString('SQL Server');
      if UpperCase(S)<>'INSTALLED' then
      begin
        CloseKey;
        Result:=2;
        Free;
        exit;
      end;
    end
    else
    begin
      CloseKey;
      Result:=3;
      Free;
      exit;
    end;
    CloseKey;
    //寻找SQL Server的驱动程序路径
    If OpenKey('Software\ODBC\ODBCINST.INI\SQL Server',False) then
    begin
      s:=ReadString('Driver');
      if S='' then
      begin
        CloseKey;
        Result:=2;
        Free;
        exit;
      end;
    end
    else
    begin
      CloseKey;
      Result:=2;
      Free;
      exit;
    end;
    CloseKey;
    //注册一个DSN名称
    If OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
      WriteString(FDSN,'SQL Server')
    else
    begin
      CloseKey;
      Result:=1;
      Free;
      exit;
    end;
    CloseKey;
    if OpenKey('Software\ODBC\ODBC.INI\'+FDSN,True) then
    begin
      WriteString('Driver',S);
      WriteString('LastUser',FUser);
      WriteString('Server',FServer);
    end
    else
    begin
      CloseKey;
      Result:=1;
      Free;
      exit;
    end;
    CloseKey;
    Free;
  end;
  Result:=0;
end;在需要调用的地方:
  i:=CreateDsn(FDSN,FServer,FUser);
  if i<>0 then
  begin
    showmessage(CreateDsnErr[i]);
    exit;
  end;