SQLServer数据库服务器名称的获取以及用户表的获取,怎么解决???
解决方案 »
- 字符串的问题
- VBScript和DELPHI结合中的超级难题,脚本中调用一个执行时间很长的函数如何避免锁定系统.
- 多表查询的难题(对我来说)
- 很简单的问题:关于integer 与 extended(我是菜鸟)
- 函数里的const怎么理解?
- mdi的问题
- 本人初次使用stringGrid,那位大哥过来指点一下...
- 为什么在Dataset的BeforeEdit事件中MessageDlg语句会执行两次?
- 哪有《Delphi 5.x ADO/MTS/COM+高级程序设计篇》源代码下载?
- delphi6中加补丁1后,cgi中无法加载ado相关组件,加补丁以前可以??????
- jpyc (九品御厨-进军嵌入式) 请进
- 关于对生成的文本加密(在线等待回复)
http://www.delphiun.com
可以看帮助里的例子
MyStringList := TStringList.Create;
try
Session.GetDatabaseNames(MyStringList);
{ fill a list box with database names for the user to select from }
ListBox1.Items := MyStringList;
finally
MyStringList.Free;
end;
------------------------------------------
表也可以用TDatabase,TADOConnection等组件可以看帮助里的例子
MyStringList := TStringList.Create;
try
Session.GetTableNames('DBDEMOS', '*.db',False, False, MyStringList);
{ Add the table names to a list box }
ListBox1.Items = MyStringList;
finally
MyStringList.Free;
end;
这些组件你 用'.'看一看还有根多你可以用的
功 能: 返回网络中SQLServer列表
参 数:
List: 需要填充的List
返回值: 成功: True,并填充List 失败 False
备 注:
版 本:
1.0 2002/10/02 22:44:00
=================================================================}
Function TPub.NetGetSQLServerList(var List: Tstringlist): boolean;
var
i: integer;
SQLServer: Variant;
ServerList: Variant;
begin
Result := False;
List.Clear;
try
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
for i := 1 to Serverlist.Count do
list.Add (Serverlist.item(i));
Result := True;
Finally
SQLServer := NULL;
ServerList := NULL;
end;
end;
在窗口上放置一个listbox控件,命名为:listbox1,原代码如下所示:
procedure TForm1.FormCreate(Sender: TObject);
var
SQLServer:Variant;
ServerList:Variant;
i,nServers:integer;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
if serverlist.count<1 then
begin //如果服务器不存在,则退出系统
showmessage('服务器不存在,请检测服务器是否已经开机或者服务是否打开了');
application.Terminate;
end
else
begin
for i:=1 to serverlist.count do
listbox1.Items.Add(serverlist.item(i)) ;
showmessage(serverlist.item(1)+'服务器已经打开,可以正常使用本系统');
adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security info=False;UserID=sa;InitialCatalog=ideal_db;DataSource='+ServerList.Item(1);
end;
SQLServer:=NULL;
serverList:=NULL;
end;
type
NET_API_STATUS = DWORD; PServerInfo100 = ^TServerInfo100;
_SERVER_INFO_100 = record
sv100_platform_id: DWORD;
sv100_name: LPWSTR;
end;
{$EXTERNALSYM _SERVER_INFO_100}
TServerInfo100 = _SERVER_INFO_100;
SERVER_INFO_100 = _SERVER_INFO_100;
{$EXTERNALSYM SERVER_INFO_100}const
NERR_Success = 0;
MAX_PREFERRED_LENGTH = DWORD(-1);
SV_TYPE_SQLSERVER = $00000004;function NetApiBufferAllocate(ByteCount: DWORD; var Buffer: Pointer):
NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetApiBufferAllocate';function NetServerEnum(ServerName: LPCWSTR; Level: DWORD; var BufPtr: Pointer;
PrefMaxLen: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD;
ServerType: DWORD; Domain: LPCWSTR; ResumeHandle: PDWORD): NET_API_STATUS;
stdcall; external 'netapi32.dll' name 'NetServerEnum';function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external
'netapi32.dll' name 'NetApiBufferFree';function GetSQLServerList(out AList: TStrings; pwcServerName: PWChar = nil;
pwcDomain: PWChar = nil): Boolean;
var
NetAPIStatus: DWORD;
dwLevel: DWORD;
pReturnSvrInfo: Pointer;
dwPrefMaxLen: DWORD;
dwEntriesRead: DWORD;
dwTotalEntries: DWORD;
dwServerType: DWORD;
dwResumeHandle: PDWORD;
pCurSvrInfo: PServerInfo100;
i, j: Integer;
begin
Result := True;
try
if Trim(pwcServerName) = '' then
pwcServerName := nil; if Trim(pwcDomain) = '' then
pwcDomain := nil; dwLevel := 100;
pReturnSvrInfo := nil;
dwPrefMaxLen := MAX_PREFERRED_LENGTH;
dwEntriesRead := 0;
dwTotalEntries := 0;
dwServerType := SV_TYPE_SQLSERVER;
dwResumeHandle := nil; NetApiBufferAllocate(SizeOf(pReturnSvrInfo), pReturnSvrInfo);
try
NetAPIStatus := NetServerEnum(pwcServerName, dwLevel, pReturnSvrInfo,
dwPrefMaxLen, dwEntriesRead, dwTotalEntries, dwServerType, pwcDomain,
dwResumeHandle); if (NetAPIStatus = NERR_Success) and (pReturnSvrInfo <> nil) then
begin
pCurSvrInfo := pReturnSvrInfo; // 循环取得所有服务
i := 0;
j := dwEntriesRead;
while i < j do
begin
if pCurSvrInfo = nil then
Break; with AList do
Add(pCurSvrInfo^.sv100_name); Inc(i);
Inc(pCurSvrInfo);
end;
end;
finally
if Assigned(pReturnSvrInfo) then
NetApiBufferFree(pReturnSvrInfo);
end;
except
Result := False;
end;
end;
var
List: TStringList;
lstBox: TListBox;
begin
List := TStringList.Create;
try
GetSQLServerList(List);
lstBox.Items := List;
finally
List.Free;
end;
end;
个人支持haipin(今天你Delphi8了吗?) 的做法
如下代码:
ADOCONNECTION1.ConnectionString := 'Provider=YourProvider;Password=SecretWord;' +
'User ID=JaneDoe;SERVER=PURGATORY;UID=JaneDoe;PWD=SecretWord;' +
'Initial Catalog=Employee';
有三个关键之处,A.SERVER=PURGATORY,SERVER指的是你的数据库服务器名称,可以是IP地址也可以是名称。
B.User ID=JaneDoe,USER ID是用户名,如缺省为SA
C.Password=SecretWord,当然是密码啦,如缺省为空,为空时Password=SecretWord这一节可不要也就是说,要让你的程序启动后能够连接到数据库服务器,就必须在ADOCONNECTION连接前(必须是CLOSE状态),
自已构造一个字符串,如以上所示,将你的数据库服务器的IP地址赋,即SERVER=服务器IP,然后将
此字符串赋给CONNECTSTRING,然后OPEN;