如何在程序中利用ini动态连接access和sql数据库,高分求完整代码,不够再给!
最近做毕业设计,要求我们利用ini动态连接不同类型的数据库,要求在一个程序中可以自由选择数据库的类型,在连接sql时要求先判断ini中的连接是否有效,无效时,自动跳出连接对话框,对话框要自动检测本机及局域网中可用的sql服务器,并将服务器名、数据库、自动列表到combox中,然后输入用户名和密码进行测试,测试通过后,要自动保存到ini中。
代码要有说明文档要,将完整代码发给我,[email protected],我是菜鸟:)

解决方案 »

  1.   

    //获取网络中可用的Sql服务器
    type
      pDword = ^DWord;
      NET_API_STATUS = DWORD;
      SERVER_INFO_100 = record
         sv100_platform_id : DWord;
         sv100_name        : pwidechar;
      end;  PSERVER_INFO_100  = ^SERVER_INFO_100;
      LPSERVER_INFO_100 = ^SERVER_INFO_100;
      ASERVER_INFO_100  = array of SERVER_INFO_100;  SERVER_INFO_101 = record
        sv101_platform_id   : dword;
        sv101_name          : pwidechar;
        sv101_version_major : Dword;
        sv101_version_minor : Dword;
        sv101_type          : dword;
        sv101_comment       : pchar;
      end;  PSERVER_INFO_101  = ^SERVER_INFO_101;
      LPSERVER_INFO_101 = ^SERVER_INFO_101;
      ASERVER_INFO_101  = array of SERVER_INFO_101;  function NetServerEnum(servername : pchar; level : Dword; var bufptr;prefmaxlen : integer; entriesread : pDword; totalentries : pDword;servertype : DWord; domain : pwidechar; resume_handle : integer):NET_API_STATUS ; stdcall; external 'netapi32.dll' name 'NetServerEnum';  function NetApiBufferFree (Buffer : pointer) : NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetApiBufferFree';const
         SV_TYPE_SQLSERVER = $00000004;
    procedure GetSqlServerName(ts:TStrings);
    var
       pBuf    : pByte;
       aBuf    : ASERVER_INFO_100;
       dwEntriesRead : DWORD;
       dwTotalEntries : DWORD;
       dwServerType : DWORD;
       i: DWORD;
       name :string;
    begin
       pBuf := nil;
       dwEntriesRead := 0;
       dwTotalEntries := 0;
       dwServerType := SV_TYPE_SQLSERVER; // all servers
       NetServerEnum(nil, 100, pBuf, -1,
         @dwEntriesRead, @dwTotalEntries, dwServerType, nil, 0);
       aBuf := ASERVER_INFO_100(pBuf);
       for i := 0 to dwEntriesRead - 1 do
         begin
           name := aBuf[i].sv100_name;
           ts.Add(Name);
         end;
       if Assigned(pBuf) then NetApiBufferFree(pBuf);
    end;
      

  2.   

    这个毕业设计,一行代码就ok了...EditConnectionString(ADOConnection1);
      

  3.   

    呵呵
    要是用EBD感觉用的可能性还是有的
      

  4.   

    BDE
    靠,紧点慢点还是发出了
      

  5.   

    你找我吧,不过记得多加点分就可以了,最近分升得太慢了,有兴趣你联系我吧,QQ:396300052,我发给你(包括INI文件,DLL加密),不过有些功能我还没有做
      

  6.   

    随便给你粘一段吧:自己在改改,不要想着别人完全给你写好了!procedure ReadFromINI(Var DatabaseIP,DataBaseName,DataBaseUserID,DataBasePwd:String);
    var
     iniFile:tiniFile;
    begin
        inifile:=tinifile.Create('.\Config.ini');
        try
          with inifile do
          begin        DatabaseIP:= ReadString('Vip_Config','ServerIP_Vip','');
            DataBaseName:= ReadString('Vip_Config','DataBaseName_Vip','');
            DataBaseUserID:= ReadString('Vip_Config','UserID_Vip','');
            DataBasePwd:= ReadString('Vip_Config','Pwd_Vip','');      end;
        finally
          inifile.Free;
        end;end;
    上面的是读取INI文件的,然后,在你程序的CREATE中  ReadFromINI(DatabaseIP,DataBaseName,DataBaseUserID,DataBasePwd);
      Str :='Provider=SQLOLEDB.1;Persist Security Info=True;';
      Str :=Str+'Data Source='+DatabaseIP+';';
      Str :=Str+'Initial Catalog='+DataBaseName+';';
      Str :=Str+'User ID='+DataBaseUserID+';';
      Str :=Str+'Password='+DataBasePwd+';';
      //Str :=Str+'Workstation ID='+DatabaseIP+';';
      //Str :=Str+'Extended Properties="Use Encryption for Data=False;Tag with column collation when possible=False";';
      //Str :=Str+'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
      //Str :=Str+'Use Encryption for Data=False;Tag with column collation when possible=False';
      Clipboard.AsText :=Str;
      ADOConnection1.Close;
      ADOConnection1.ConnectionString :='';
      ADOConnection1.ConnectionString :=Str;
      ADOConnection1.Open;基本就OK至于怎么写入INI文件,就自己找吧,遍地都是!
      

  7.   

    呵呵,我做过,TStringList读,有个对象可以弹出连接对话框,查查就知道了
      

  8.   

    procedure GetColors;beginActiveStatus := WhatColor(ACTIVE_COLOR,'Green');SoldStatus := WhatColor(SOLD_COLOR,'Gray');end;
    function WhatColor(name, Default: String) : TColor;varval : String;myIni: TIniFile;beginmyIni := TIniFile.Create(INI_FILE);val := UpperCase(myIni.ReadString(COLOR_SECTION,name,default));myIni.Free;if val = 'MAROON' then WhatColor := clMaroon elseif val = 'GREEN' then WhatColor := clGreen elseif val = 'OLIVE' then WhatColor := clOlive elseif val = 'NAVY' then WhatColor := clNavy elseif val = 'PURPLE' then WhatColor := clPurple elseif val = 'TEAL' then WhatColor := clTeal elseif val = 'GRAY' then WhatColor := clGray elseif val = 'SILVER' then WhatColor := clSilver elseif val = 'RED' then WhatColor := clRed elseif val = 'LIME' then WhatColor := clLime elseif val = 'YELLOW' then WhatColor := clYellow elseif val = 'BLUE' then WhatColor := clBlue elseif val = 'FUCHSIA' then WhatColor := clFuchsia elseif val = 'AQUA' then WhatColor := clAqua elseif val = 'WHITE' then WhatColor := clWhite elseWhatColor := clBlack;end;