救救小菜鸟!!!Sql Server数据库的名字都存在哪里了?100相赠!!!(100分)

  • 主题发起人 主题发起人 李维宏
  • 开始时间 开始时间

李维宏

Unregistered / Unconfirmed
GUEST, unregistred user!
将问题简化一下吧!一个下拉列表框,需列出所有Sql Server的数据库名,到什么地方找他们??
 
你能不能仔细看看delphi 自带的程序
/Borland/Delphi5/Demos/Db/Bkquery/
 
查找你机器的*.mdf文件
 
mssql在你的c:/data/目录(当然看你安装在哪里)下面的mdf文件。
 
以sa登陆master然后
exec sp_MSdbuseraccess N'db', N'%'
 
master库中的sysdatabases表
 
Exec sp_databases会返回一个名为'DataBase_Name'的列表,包括当前所有数据库名,
这个方法最简单。
 
TSession有相关函数
 
注册表里有数据库存放目录这一项
 
谢谢各位大虾了!!
 
master数据库中有个存储过程叫sp_databases.无任何参数.
 
用SQLDMO可以轻松实现
兄弟参考下面的对你会大有好处

var

app:_application;
server:_sqlserver;
dtbase:_database;
DBFileData :_DBFile;
LogFile :_LogFile;
Backup :_Backup;
Restore :_Restore;
u:_user;
log:_login;
uname,upass:string;
implementation

uses dbset;

{$R *.dfm}

procedure Tfrmmain.FormCreate(Sender: TObject);
var
i:integer;
nl:namelist ;
begin
app:=coapplication.Create;
server:=cosqlserver.Create ;
dtbase:=codatabase.Create ;
DBFileData :=coDBFile.Create ;
LogFile :=coLogFile.create;
Backup :=coBackup.Create ;
Restore :=coRestore.create;
u:=couser.create;
log:=cologin.Create ;

nl:=app.ListAvailableSQLServers;
cmbsqlname.Clear;
for i:=0 to nl.Count-1 do
begin
cmbsqlname.Items.Add(nl.Item(i+1) )
end;
cmbsqlname.ItemIndex:=0;
end;

procedure Tfrmmain.chkbxntClick(Sender: TObject);
begin
if chkbxnt.Checked then
begin
edtusername.Enabled:=false;
edtpass.Enabled:=false;
edtusername.Color:=clBtnFace;
edtpass.Color:=clBtnFace;
end
else
begin
edtusername.Enabled:=true;
edtpass.Enabled:=true;
edtusername.Color:=clWindow;
edtpass.Color:=clWindow;
end;
end;

procedure Tfrmmain.btnexitClick(Sender: TObject);
begin
if btndis.Enabled then
begin
Server.DisConnect;
btnok.Enabled:=true;
btndis.Enabled:=false;
btncr.Enabled :=false;
btnbk.Enabled :=false;
btnrs.Enabled:=false;
spbtndel.Enabled:=false;
spbtnset.Enabled:=false;
end;

close;
end;

procedure Tfrmmain.btnokClick(Sender: TObject);
var
i:integer;
begin
Screen.Cursor := crHourGlass;
server:=cosqlserver.Create;
server.LoginTimeout:=-1;
try
If chkbxnt.Checked Then
begin
With Server do
begin
LoginSecure:=true;
AutoReConnect:= False;
Connect(cmbsqlname.Text,null,null);
end;
end
Else
begin
With Server do
begin
LoginSecure := False;
AutoReConnect := False;
Connect(cmbsqlname.Text,edtusername.Text, edtpass.Text);

end;
end;
cmbdbname.Clear;
for i:=1 to server.Databases.Count do
begin
cmbdbname.Items.Add(server.Databases.Item(i,'').Name);
end;
cmbdbname.ItemIndex:=0;
Screen.Cursor := crDefault;
btnok.Enabled:=false;
btndis.Enabled:=true;
btncr.Enabled :=true;
btnbk.Enabled :=true;
btnrs.Enabled:=true;
spbtndel.Enabled:=true;
spbtnset.Enabled:=true;
except
forms.application.MessageBox('用户名或口令有误', '登录', MB_OK or MB_ICONINFORMATION);
Screen.Cursor := crDefault;
end;
end;

 
use Master
SELECT Name FROM sysdatabases
 
我知道 给我邮箱
 
接受答案了.
 
后退
顶部