本人最近在做一个数据库备份还原的程序,现在碰到一个问题如下:让用户动态输入连接sqlserver服务器的参数后(我用adoconnection组建来做),部分代码如下:str:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' +gly.text+';Password='+mm.text+'; InitialCatalog='+db.text+';Data Source='+server.text;
//showmessage(str);
adoconnection1.Connected:= False;adoconnection1.connectionstring:=str;
try
adoconnection1.open;
adoconnection1.Connected:=true;application.MessageBox('连接服务器成功','测试连接',0);
form1.Hide;
form2.Show;except
ShowMessage('无法连接指定的数据库!请检查您的输入是否正确!');
application.Terminate;end;
这个异常处理无法处理当用户输入的数据库名称错误时,程序还是跳到form2,
如何取得sqlserver中所有数据库的名称,从而判断用户输入的数据库名称是正确的。望高手赐教!

解决方案 »

  1.   

    SELECT name
    FROM master.dbo.sysdatabases
      

  2.   

    查非系统数据库名:
    SELECT *
    FROM master.dbo.sysdatabases
    where sid <> 0x01
      

  3.   

    //将adoquery 连接到master
    with adoquery1 do
    begin
     active:=false;
     sql.clear;
     sql.add('select name from sysdatabases');
     active:=True;
    end;在放一个datasource和dbgrid, 就可以显示出来
      

  4.   

    SELECT name
    FROM master.dbo.sysdatabasessp_helpdb
      

  5.   

    用adoquery执行
    SELECT name
    FROM master.dbo.sysdatabases
    后,用adoquery的什么方法可以取到该sql执行后的记录集
      

  6.   

    来晚了procedure TDBConnSet.GetDBNameList(AList:TStrings);
    begin
      with DMMain.QryComm do
      begin
        Close;                                              
        SQL.Clear;
        SQL.Add('select Name from master.dbo.sysdatabases Where DBId>6 Order By Name');
        Open;    
        AList.Clear;
        while not Eof do
        begin
          AList.Add(FieldByName('Name').AsString);
          Next;
        end;    // while
        Close;
      end;    // with
    end;
      

  7.   

    yeeyee(易 一 在追 M*M) ,请问AList是什么,能否解释一下,谢谢,还有你用的是什么组件
      

  8.   

    你把这个函数拿出来用就是的,我封装的控件。//传入一个字符链表撒。
    //调用实例。procedure TFormArea.BitBtn1Click(Sender: TObject);
    begin
      YDBConnSet.GetDBNameList(self.Memo1.Lines);
    end;
      

  9.   

    DBId《=6 表示系统数据库。DBId>6 表示用户建立的数据库,分析下。
      

  10.   

    还是不懂,能不能用delphi自带的组件,取到sqlserver数据库的列表,再与用户数据的数据库名称做比较,请给出源代码,谢谢!