我正在使用VS2010、.Net 4.0、MS SQL SERVER 2008。
我以为我知道如何从数据库中获取所有表名。但是我错了。有了表名,我也得到了视图名。但是当我为视图做这件事时,我只得到视图。我不知道为什么会这样。
这是我的代码,我尝试过的:
public DataTable getAllTables(string serverName, string dbName, string authenticationType, string Login, string pass)
{
using (SqlConnection sqlConn = Return_Conn(serverName, dbName, authenticationType, Login, pass))
{
sqlConn.Open();
DataTable dt = sqlConn.GetSchema("Tables");
DataTable dt1 = new DataTable();
string[] column = { "TABLE_NAME" };
dt1 = dt.DefaultView.ToTable("dd", false, column);
sqlConn.Close();
return dt1;
}
}
public DataTable getAllViews(string serverName, string dbName, string authenticationType, string Login, string pass)
{
using (SqlConnection sqlConn = Return_Conn(serverName, dbName, authenticationType, Login, pass))
{
sqlConn.Open();
DataTable dt = sqlConn.GetSchema("Views");
DataTable dt1 = new DataTable();
string[] column = { "TABLE_NAME" };
dt1 = dt.DefaultView.ToTable("dd", false, column);
sqlConn.Close();
return dt1;
}
}
在DataTable dt = sqlConn.GetSchema("Tables");
这一行中,dt包含所有表和视图。在 dt 中,Views的table_type显示“View ”,table显示“Base Table”。
但在DataTable dt = sqlConn.GetSchema("Views");
这一行中,dt仅包含视图。
这里有什么问题?我该如何解决?