我的做好后的系统要到别的机器上运行,数据库是SQLSERVER的,
我的系统既是单机又是网络版,假如我原来自己的机器上的SQLSERVER和要运行的
SQLSERVER名称不一样,我用ADO挂接数据库,但是先要取得本机SQLSERVER的实例名,
才能挂。请问如何取得。
  还有,我做了个小程序,里面可以列出当前网络中的所有计算机名称,那请
问我点选了一台计算机,怎样显示出它装有的SQLSEVER实例名称。

解决方案 »

  1.   

    动态设定ADOConnection的ConnectionString
      

  2.   

    var
      ConnStr:string;
    begin      
      ConnStr := ConnStr + 'Provider=SQLOLEDB.1;';
      ConnStr := ConnStr + 'Password=' + FormDataSet.edtPassword.Text + ';';
      ConnStr := ConnStr + 'Persist Security Info=True;';
      ConnStr := ConnStr + 'User ID=' + FormDataSet.edtUser.Text + ';';
      ConnStr := ConnStr + 'Initial Catalog=MyDatabase;';
      ConnStr := ConnStr + 'Data Source=' + FormDataSet.edtServer.Text + ';';
      ADOConnection1.ConnectionString:=ConnStr;
      ADOConnection1.Connected:=True;
    end;
    你可以将以上的连接信息写到注册表或ini文件中,在ADOConnection的BeforeConnect事件中如上设置ConnectionString
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    SQLServer:Variant;
    ServerList:Variant;
    i,nServers:integer;
    // sRetValue:String;
    begin
    SQLServer := CreateOleObject('SQLDMO.Application');
    ServerList:= SQLServer.ListAvailableSQLServers;
    nServers:=ServerList.Count;
    for i := 1 to nservers do
    ListBox1.Items.Add(ServerList.Item(i));
    SQLServer:=NULL;
    serverList:=NULL;
    end;以上的程序可以得到网络上的所有sql 服务器,希望对你有用。
      

  4.   

    什么动态连接,全是废话。
    用.ini文件保存数据库参数,就可以了。
      

  5.   

    xjspa(天涯)的代码要能执行需在
       单元应用  uses加上comobj此单元
    不然会提示没有声明这段代码似乎并不可以得到网络上的所有sql 服务器,只能得到本服务器上的sql server的名称
    讨论.......
      

  6.   

    献上一段和 xjspa(天涯) 异曲同工的代码uses
      .....,SQLDMO_TLB;
       .
       .
       .
    procedure TTForm1.FormCreate(Sender: TObject);
    var
      App:_application
      i:integer;
      nl:namelist;
    begin
      App:=coapplication.Create;  
      nl:=App.ListAvailableSQLServers;
      CmbxServer.Clear;
      for i:=0 to nl.Count-1 do
        begin
           CmbxServer.Items.Add(nl.Item(i+1) )
        end;
      CmbxServer.ItemIndex:=0;
    end;