出自:http://www.china-askpro.com/msg30/qa43.shtml如何获得SQL服务器所管理的所有数据库名编号:QA002943 建立日期: 2000年5月16日 最后修改日期:2001年7月9日 所属类别: Visual Basic - 数据库 彭晓刚: 操作系统:windows98 编程工具:vb6.0 问题:我用VB的ADO方式访问SQL数据库,请问怎样动态的连接数据库,既给出服务器名和用户名,密码,程序能给出SQL服务器所管理的所有数据库,让我动态的连接。现在我连接时,数据库名由我给出。因此,也无法创建新的SQL数据库,而只能建表.望指点,谢谢,非常。 水平: 刚入门 回答: 调用系统存储过程sp_helpdb,VB例程(DAO) Dim r As Recordset,db As Database,wks as Workspace Set wks = DBEngine.CreateWorkspace("myWks", "Admin", "", dbUseODBC) Set Db = wks.OpenDatabase("", dbDriverNoPrompt, 0, "ODBC;SERVER=MYSERVER;DRIVER={SQL SERVER};DSN='';UID=sa;DATABASE=master;PWD=;") Set r = db.OpenRecordset("sp_helpdb") Do While Not r.EOF debug.print r!Name r.MoveNext Loop r.Close
db.Close wks.Close
lisle的意见: Dim svr As New SQLDMO.SQLServer Dim db As SQLDMO.Database Dim i As Integer svr.Connect "(local)", "sa" Set db = svr.Databases("pubs") For i = 1 To db.Tables.Count Debug.Print db.Tables(i).Name next
Query = " Select * from sysobjects where xtype='U'"
所有的数据库select * from sysdatabases
SELECT * FROM SYSOBJECTS WHERE XTYPE = 'U'
首先在“工具”-“引用”中引用 Microsoft SQLDMO object Library。Private Sub Combo1_DropDown() If Combo1.ListCount > 0 Then Dim Dn As String Dn = Trim(Combo2.Text) 'combo1是列数据库名的combo控件 Combo1.Clear Combo1.Text = Dn SendKeys "{END}" '以上实现下拉时原来内容不被清空 Else End If Dim svr As New SQLDMO.SQLServer Dim i As Integer svr.Connect "ServerName", "UerID", "PWD" '3个引号内分别为服务器名,用户名,密码 For i = 1 To svr.Databases.Count Combo1.AddItem svr.Databases(i).Name Next End Sub 以上已经本人编译证实。
建立日期: 2000年5月16日 最后修改日期:2001年7月9日
所属类别: Visual Basic - 数据库 彭晓刚:
操作系统:windows98
编程工具:vb6.0
问题:我用VB的ADO方式访问SQL数据库,请问怎样动态的连接数据库,既给出服务器名和用户名,密码,程序能给出SQL服务器所管理的所有数据库,让我动态的连接。现在我连接时,数据库名由我给出。因此,也无法创建新的SQL数据库,而只能建表.望指点,谢谢,非常。
水平: 刚入门 回答: 调用系统存储过程sp_helpdb,VB例程(DAO)
Dim r As Recordset,db As Database,wks as Workspace
Set wks = DBEngine.CreateWorkspace("myWks", "Admin", "", dbUseODBC)
Set Db = wks.OpenDatabase("", dbDriverNoPrompt, 0, "ODBC;SERVER=MYSERVER;DRIVER={SQL SERVER};DSN='';UID=sa;DATABASE=master;PWD=;")
Set r = db.OpenRecordset("sp_helpdb")
Do While Not r.EOF
debug.print r!Name
r.MoveNext
Loop
r.Close
db.Close
wks.Close
lisle的意见:
Dim svr As New SQLDMO.SQLServer
Dim db As SQLDMO.Database
Dim i As Integer
svr.Connect "(local)", "sa"
Set db = svr.Databases("pubs")
For i = 1 To db.Tables.Count
Debug.Print db.Tables(i).Name
next
If Combo1.ListCount > 0 Then
Dim Dn As String
Dn = Trim(Combo2.Text) 'combo1是列数据库名的combo控件
Combo1.Clear
Combo1.Text = Dn
SendKeys "{END}"
'以上实现下拉时原来内容不被清空
Else
End If
Dim svr As New SQLDMO.SQLServer
Dim i As Integer
svr.Connect "ServerName", "UerID", "PWD" '3个引号内分别为服务器名,用户名,密码
For i = 1 To svr.Databases.Count
Combo1.AddItem svr.Databases(i).Name
Next
End Sub
以上已经本人编译证实。