4

使うとき

SqlConnection.GetSchema("Tables");

ターゲットデータベースのすべてのテーブルとビューを返します。

テーブルを返す方法はありますか?私が行ったすべての調査は、これを正しく行っていることを示していますが、常にテーブルのようにビューを返します。デバッグでDataTableを掘り下げましたが、違いを見つけることすらできません。データ型は同じように報告されます...私が知る限り、ビューとテーブルを区別することはできません。(すべての意図と目的のビューは表であるため、ある意味で意味があります。)

テストにNorthwindデータベースを使用しています。

私はC#でアプリケーションを書いています。

スキーマ情報を取得するために実行しているコードは次のとおりです。ものすごく単純。

SQLCon.Open();
DataTable tables = SQLCon.GetSchema("Tables");
SQLCon.Close();

私はgetschemaメソッドを使用したいので、別の方法でデータベースにクエリを実行する必要はありません...可能であれば。

4

2 に答える 2

6

この記事によると、返されるデータテーブルには、table_typeそれがaであるか。であるかをVIEW示す列がありますBASE TABLE
その列を使用して、C#側のビューを除外します。

于 2012-11-05T07:38:23.503 に答える
6

これが完全な構文です

DataTable table = connection.GetSchema("Tables", new string[] { null, null, null, "BASE TABLE" });
于 2015-06-29T20:40:01.553 に答える