日期:2014-05-17  浏览次数:20614 次

SQLDMO 获得指定数据库中的所有表
下边这段代码可以获取指定数据库的所有表,
但是其中也包括系统的基表,我想只获得用户表,该怎么取得。

  private void GetTabels_DMO(string strServerName,string strUser,string strPWD,string strDatabase)
        {
            SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass();                 
            //连接到服务器
            Server.Connect(strServerName,strUser,strPWD); 
            //对所有的数据库遍历,获得指定数据库
            for(int i=0;i<Server.Databases.Count;i++) 
            { 
                //判断当前数据库是否是指定数据库
                if(Server.Databases.Item(i+1,"dbo").Name ==strDatabase) 
                { 
                    //获得指定数据库
                    SQLDMO._Database db= Server.Databases.Item(i+1,"dbo"); 
                    //获得指定数据库中的所有表
                    for(int j=0;j<db.Tables.Count;j++) 
                    { 
                        MessageBox.Show(db.Tables.Item(j+1,"dbo").Name); 
                    } 
                } 
            } 
        }

------解决方案--------------------
把这个语句的结果集用前端程序显式出来即可,没必要那么复杂
select name from sys.tables 
------解决方案--------------------
select * from sys.objects where type='u'

select * from sys.tables 
------解决方案--------------------
引用:
引用:把这个语句的结果集用前端程序显式出来即可,没必要那么复杂
select name from sys.tables

嗯 用这个可以实现,但是我想知道用这个sqldmo有什么属性可以判断表是系统表还是用户表吗?

好像没有哎,下面这篇文章介绍了SQL-DMO Object Tree,Table下面没有判断是否为用户表的方法。 
http://msdn.microsoft.com/en-us/library/aa274857(v=sql.80).aspx