SQL Server 7: select name from master..sysdatabases
VB版的:
Dim i As Integer Dim sDSNItem As String * 1024 Dim sDRVItem As String * 1024 Dim sDSN As String Dim sDRV As String Dim iDSNLen As Integer Dim iDRVLen As Integer Dim lHenv As Long
If SQLAllocEnv(lHenv) <> -1 Then Do Until i <> SQL_SUCCESS sDSNItem = Space(1024) sDRVItem = Space(1024) i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, iDSNLen, sDRVItem, 1024, iDRVLen) sDSN = VBA.Left(sDSNItem, iDSNLen) sDRV = VBA.Left(sDRVItem, iDRVLen)
If sDSN <> Space(iDSNLen) Then cboDSN.AddItem sDSN End If If sDRV <> Space(iDRVLen) Then cboDRV.AddItem sDRV End If Loop End If cboDSN.ListIndex = 0
主要是SQLAllocEnv,SQLDataSources两个API,具体用法查查MSDN
是不是这样 begin mylist:=TStringlist.Creat; Try Session.Getdatabasename(mylist); Result:=VararrayCreate([0,mylist.count-1],varolestr); for i:=0 to mylist.count-1 do result[i]:=mylist[i]; finally mylist.free; end; 我只知道这个
谢谢大家,但我想知道如何提取一台机器中的所有数据库,而非某一数据库中的所有Table
是这样 begin mylist:=TStringlist.Creat; Try Session.Getdatabasename(mylist); Result:=VararrayCreate([0,mylist.count-1],varolestr); for i:=0 to mylist.count-1 do result[i]:=mylist[i]; finally mylist.free; end;
select name from master..sysdatabases
Dim i As Integer
Dim sDSNItem As String * 1024
Dim sDRVItem As String * 1024
Dim sDSN As String
Dim sDRV As String
Dim iDSNLen As Integer
Dim iDRVLen As Integer
Dim lHenv As Long
If SQLAllocEnv(lHenv) <> -1 Then
Do Until i <> SQL_SUCCESS
sDSNItem = Space(1024)
sDRVItem = Space(1024)
i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, iDSNLen, sDRVItem, 1024, iDRVLen)
sDSN = VBA.Left(sDSNItem, iDSNLen)
sDRV = VBA.Left(sDRVItem, iDRVLen)
If sDSN <> Space(iDSNLen) Then
cboDSN.AddItem sDSN
End If
If sDRV <> Space(iDRVLen) Then
cboDRV.AddItem sDRV
End If
Loop
End If
cboDSN.ListIndex = 0
begin
mylist:=TStringlist.Creat;
Try
Session.Getdatabasename(mylist);
Result:=VararrayCreate([0,mylist.count-1],varolestr);
for i:=0 to mylist.count-1 do
result[i]:=mylist[i];
finally
mylist.free;
end;
我只知道这个
begin
mylist:=TStringlist.Creat;
Try
Session.Getdatabasename(mylist);
Result:=VararrayCreate([0,mylist.count-1],varolestr);
for i:=0 to mylist.count-1 do
result[i]:=mylist[i];
finally
mylist.free;
end;