列举SQL Server中的数据库名称、某一数据库的中表名
列举SQL Server中的数据库名称、某一数据库的中表名
*-----------------------------------
方法一:
调用系统数据库 MASTER 中的存储过程 sp_helpdb 即可,如下:
lnsqlhandle=SQLSTRINGCONNECT("driver=SQL Server;server=计算机名;uid=sa;pwd=;database=master")
IF lnsqlhandle<0
MESSAGEBOX('连接失败!',16,'信息提示')
RETURN
ENDIF
lnsucc=SQLEXEC(lnsqlhandle,"exec sp_helpdb","DataBaseValue")
IF lnsucc<0
MESSAGEBOX('调用失败!',16,'信息提示')
RETURN
ENDIF
SELECT DataBaseValue
SCAN
?ALLTRIM(NAME)
ENDSCAN
如果想把数库名显示在一个下拉框中
----------------------------------
在表单的INIT事件中:
THISFORM.COMBO1.STYLE=2
THISFORM.COMBO1.ROWSOURCETYPE=6
THISFORM.COMBO1.ROWSOURCE='ALLTRIM(DataBaseValue.Name)'
前提:表单上有控件COMBO1
方法二:
----------------------------------
用DMO,如果没有安装SQL Server的话,只需把SQLDMO.DLL注册一下就可以了。
LOCAL loForm
loForm = CREATEOBJECT("Form1")
loForm.SHOW(1)
DEFINE CLASS Form1 AS FORM
WIDTH = 200
HEIGHT = 70
MAXBUTTON = .F.
BORDERSTYLE = 2
CAPTION = "SQL Server"
ADD OBJECT COMBO1 AS COMBOBOX WITH TOP = 20, LEFT = 30, WIDTH = 140, STYLE = 2
PROCEDURE INIT
LOCAL loServer
loServer = CREATEOBJECT("SQLDMO.SQLServer")
loServer.CONNECT("127.0.0.1", "sa", "")
FOR i2 = 1 TO loServer.DATABASES.COUNT
THIS.COMBO1.ADDITEM(loServer.DATABASES.ITEM(i2).NAME)
ENDFOR
THIS.COMBO1.VALUE = THIS.COMBO1.LIST(1)
RELEASE loServer
ENDPROC
ENDDEFINE
列举SQL Server中某一数据库中的表名
*-----------------------------------
lnsqlhandle=SQLSTRINGCONNECT("driver=SQL Server;server=计算机名;uid=sa;pwd=;database=数据库名")
IF lnsqlhandle<0
MESSAGEBOX('连接失败!',16,'信息提示')
RETURN
ENDIF
lnsucc=SQLTABLES(lnsqlhandle,'TABLE','MyTable') &&'TABLE'必须大写,取得用户表名
*lnsucc=SQLTABLES(lnsqlhandle,'VIEW','MyTable') &&'VIEW'必须大写,取得视图名
*lnsucc=SQLTABLES(lnsqlhandle,'SYSTEM TABLE','MyTable') &&'SYSTEM TABLE'必须大写,取得系统表名
*lnsucc=SQLTABLES(lnsqlhandle,'','MyTable') &&'SYSTEM TABLE'必须大写,取得所有表名
IF lnsucc<0
MESSAGEBOX('出错了!',16,'信息提示')
RETURN
ENDIF
SELECT MyTable
SCAN
?ALLTRIM(Table_Name)
ENDSCAN
如果想把数库中的表名显示在一个下拉框中
----------------------------------
在表单的INIT事件中:
THISFORM.COMBO1.STYLE=2
THISFORM.COMBO1.ROWSOURCETYPE=6
THISFORM.COMBO1.ROWSOURCE='ALLTRIM(MyTable.Table_Name)'
前提:表单上有控件COMBO1