zoukankan      html  css  js  c++  java
  • 列举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

     
  • 相关阅读:
    韦德螺旋: 这真是一个螺旋吗?
    山上你能看到什么动物?
    你能够30秒内一字不差的念完它吗? 注意, 是读“颜色”, 不是让你识字.
    路透斯沃德的不可能的三角形
    换个角度, 青蛙也许就是白马王子
    这是一张很有趣的图片, 通常女性会先看到月亮, 男性会先看到人脸. 如果相反, 表示你体内的异性荷尔蒙偏高哦!
    亲吻的情侣幻觉: 这幅虚幻的亲吻由美国艺术家杰里•唐恩创作.
    PostgreSQL的 initdb 源代码分析之七
    PostgreSQL的initdb 源代码分析之六
    PostgreSQL的initdb 源代码分析之五
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2082003.html
Copyright © 2011-2022 走看看