2011-01-22 37 views
6

C#.NET Windowsアプリケーションのテーブルとカラム情報を読んでみたいと思います。私は、SQL Server用のSMOベースアクセスがあることを知っています。同様の理由で、SQLite用のAPIはありますか?C#.NETでSQLiteテーブル情報を読む

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SQLite"); 
using (DbConnection connection = factory.CreateConnection()) 
{ 
    connection.ConnectionString = @"Data Source=D:\tmp\test.db"; 
    connection.Open(); 
    DataTable tables = connection.GetSchema("Tables"); 
    DataTable columns = connection.GetSchema("Columns"); 
    tables.Dump(); 
    columns.Dump(); 
} 

GetSchemaが指定したテーブル、列、または何についての情報を含むDataTableを返します。

+0

あなたはこのを探していますか? http://stackoverflow.com/questions/93654/is-there-a-net-c-wrapper-for-sqlite –

+0

@Martin Buberl、これは同じ質問ではない... OPはADO.NETプロバイダを探していない彼はデータベースメタデータにアクセスする方法を尋ねています –

答えて

16

あなたがGetSchemaメソッドを使用することができます。 SQLiteのための有効なGetSchema引数は次のとおりです。

  • MetaDataCollectionsという
  • DataSourceInformation
  • データ型
  • ReservedWords
  • カタログ
  • インデックスを
  • IndexColumns
  • テーブル
  • ビュー
  • ViewColumns
  • のForeignKey
  • トリガ
+3

[this stackoverflow post] [1]によると、getSchemaはSQLiteでは機能しません。私は同じ問題を抱えていて、現在SQLiteCommand( "PRAGMA table_info( 'tracks') '、DB)を使用しています。" [1]:http://stackoverflow.com/questions/3268986/getting-table-schema-システムデータと同じように見える –

+0

@ RU-Bn、私はもう一度試してみましたが、少なくとも公式のSystem.Data.SQLiteプロバイダではうまくいきます。 –

+0

Thx @Thomasしかし、いくつかの(ハードまたはソフト)構成に固有のものです。 (プロバイダバージョン1.0.65を使用)また、同じ問題を抱える将来のユーザーのためのバックアップ/クイックジャンプとしても言及しました。 (いいえ信じられない;-)) –

関連する問題