我想写成unit中的通用函数,不知道该如何实现???

解决方案 »

  1.   

    如果你用adoconnection的话。就把connectstring里面的处理一下啊。把IP或者实例名当参数,每次用进去。用TRY结构做adoconnected,如果成功就返回T,连不上失败就返回F,并且给出错误提示。
      

  2.   

    uses ... ADODB, StrUtils;
    ...function Check(username,password,ipaddr: string): boolean;
    var
      ADOCN:TADOConnection;
      ConnString:string;
    begin
      ConnString:='Provider=SQLOLEDB.1;Password=口令;Persist Security Info=True;User ID=用户;Initial Catalog=master;Data Source=地址';
      ConnString:=AnsiReplaceStr(ConnString,'口令',password);
      ConnString:=AnsiReplaceStr(ConnString,'用户',username);
      ConnString:=AnsiReplaceStr(ConnString,'地址',ipaddr);
      ADOCN.Create(nil);
      ADOCN.LoginPrompt:=false;
      try
      ADOCN.Close;
      ADOCN.ConnectionString:=ConnString;
      ADOCN.Open;
      Result:=true;
      except
      Result:=false;
      end;
    end;
      

  3.   

    ADOCN.Close;
    这一句执行的时候就出错了!!!
      

  4.   

    ADOCN.Create(nil);
    ADOCN.CommandTimeout :=2;
      ADOCN.LoginPrompt:=false;
      

  5.   

    ADOCN.CommandTimeout :=2; 加了这一句也会出错的!
      

  6.   

    //sqlserver 支持tcp/ip 协议得话可以用这个方法快速简单检查;除非dba设置了不同得port或者动态prot或是只是采用命名管道协议。
    到窗体上放一个IdTcpClient ,在indy面板  IdTcpClient1.Host := 'localhost';     //sqlserver 服务器机器名称
      IdTcpClient1.Port := 1433;            //sqlserver tcp/ip协议端口
      try
        IdTcpClient1.Connect();             //连接connect方法可以增加超时时间
        if not IdTcpClient1.Connected then
        begin
          ShowMessage('无法连接,或者网络不通');
          exit;                             //无法连接sqlserver
        end
        else
        begin
          IdTcpClient1.Disconnect;          //连接成功;
          ShowMessage('连接成功!');
        end;
      except
        ShowMessage('无法连接,或者网络不通');
      end;