代码实现在combobox中显示sql server所有数据库名的问题。求助!
解决方案 »
- radiogroup1.ItemIndex的问题,在线急等,~~~急急,分不多了,请高手
- DBnavigator似乎不合乎一般的操作习惯?
- indy发送接和收文件问题!!!!!!!!!!!!!!!!!!!!
- 模态窗口的销毁与重显示问题
- 请问用delphi如何判断access中的字段是否为空???????????急
- Delphi到底哪种程度才可以见人?
- 我在客户端为何无法调用服务端的方法?
- 在程序中怎样调用chm和hlp才算正确?
- 关于DELPHI和VB的问题
- 如何控制其他程序的文本输入框,用自己的程序进行读写?要用到哪个api函数?望大虾赐教。如果有好的答案,我会再开帖子给分的。
- 问几个比较变态的DELPHI的问题,期待高手献身解答 :D 关于 WebBrowser
- 请教liuyang,我是用LYFTP连接公司内部的UNIX服务器,试了SCO、SUN、和Windows下的ServU,都无法连接
SQLServer:Variant;
ServerList:Variant;
i:integer;
begin SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
if serverlist.count<1 then
application.Terminate
else
begin
CmBxSqlServer.Items.Clear;
for i:=1 to serverlist.count do
CmBxSqlServer.Items.Add(serverlist.item(i)) ;
end;
SQLServer:=NULL;
serverList:=NULL;
end;
myADOQuery : TADOQuery;
i : integer;
begin
myADOQuery := TADOQuery.Create(nil);
myADOQuery.Conection := ....//这个是连接,自己填,连到master数据库
myADOQuery.SQL.Clear;
myADOQuery.SQL.Add('select name from sysdatabases');
myADOQuery.Open;
for i:=0 to myADOQuery.RecordCount-1 do
begin
ComboBox1.items.Add(myADOQuery.FieldByName('name').AsString);
end;
end;
Variants;
Var
i:Integer;
SQLServer:Variant;//SQLDMO.SQLServer
begin
SQLServer:=CreateObject('SQLDMO.SQLServer');
SQLServer.Connect('ServerName','LoginName','*****');
for i:=1 to SQLServer.DataBases.Count do
begin
DatabasesComboBox.Items.Add(SQLServer.DataBases.Item(i).Name);
end;
二楼的方法可能在不具备master数据库访问权限时,拒绝访问。
select [name] from sysdatabases where dbid >= 7 //当dbid<7 时,其对应的是系统库
>>吗?'*****'是什么意思呢?谢谢!
'******'是密码串
SQLServer.Connect('机器名或者IP地址','SQL登录用户名','该登录用户的登录密码')
具体说的数据库是Windows用户登录是否指提Windows验证模式?这是不影响的。一般建议安装时选混合验证模式。
Var
i:Integer;
SQLServer:Variant;//SQLDMO.SQLServer
begin
SQLServer:=CreateOleObject('SQLDMO.SQLServer');
//下面的請正確書寫SQLServer的服務器名、登入的用戶名、密碼
SQLServer.Connect('.','username','password');
for i:=1 to SQLServer.DataBases.Count do
begin
DatabasesComboBox.Items.Add(SQLServer.DataBases.Item(i).Name);
end;end;
>>二楼的方法可能在不具备master数据库访问权限时,拒绝访问。三楼的不能运行在没装备SQL SERVER客户端访问工具的环境中成功执行...当然,1楼的也不行
>>select [name] from sysdatabases where dbid >= 7 //当dbid<7 时,其对应的是系统库
我不同意这种做法或说法,因为有很多人根本就没有创建用户数据库就直接使用的master数据库的也有,另外什么msdb之类的那几个更是在MS$的Demo当中就经常使用。再者数据库并没有是否系统数据库的说法,只有系统表、系统存储过程的说法。换而言之,也就是说判断是否系统数据库也是没有任何依据的。只不过对于master与msdb这两个库来说,确实对它们操作权限的话,对SQL构成很大的安全上面的威胁,毕竟所有系统信息,以及超权限功能系统存储过程都在这里面。
>>>>二楼的方法可能在不具备master数据库访问权限时,拒绝访问。
>>
>>三楼的不能运行在没装备SQL SERVER客户端访问工具的环境中成功执行...当然,1楼的也不行对于环境来说这个问题就实在是不好讨论了,什么Win9x、Winnt等这一切要考虑,即使使用ADO,有时还得考虑它的实现障碍,就算是上网还考虑网络的连接等等一切可行性因素……环境是可以改造的,不能说是我现在没水也要我把米煮成饭,这似乎有点过于牵强了点。
SQLServer.Connect('servername','sa','password');
except
showmessage('you not install sql server');
end;
如果这句失败则没安装SQL SERVER另,每个关于COM接口的函数调用,也就是那些返回类型为HResult的函数,最好都以OleCheck包装,因为一个不检查返回状态的COM接口操作实在太危险了.