下边这段代码可以获取指定数据库的所有表,
但是其中也包括系统的基表,我想只获得用户表,该怎么取得。
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
------解决方案--------------------
好像没有哎,下面这篇文章介绍了SQL-DMO Object Tree,Table下面没有判断是否为用户表的方法。
http://msdn.microsoft.com/en-us/library/aa274857(v=sql.80).aspx