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にはビューしか含まれていません。
ここで何が問題なのですか?どうすれば解決できますか?