2011-01-22 15 views
6

Me gustaría leer la tabla y la información de la columna en la aplicación C# .NET para Windows. Sé que hay acceso base SMO para SQL Server. En un terreno similar, ¿hay alguna API para SQLite?Lectura de información de la tabla SQLite en C# .NET

+0

busca para esto? http://stackoverflow.com/questions/93654/is-there-a-net-c-wrapper-for-sqlite –

+0

@Martin Buberl, esa no es la misma pregunta ... el OP no está buscando un proveedor ADO.NET , pregunta cómo acceder a los metadatos de la base de datos –

Respuesta

16

Puede utilizar el método GetSchema:

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 devuelve un DataTable que contiene información sobre las tablas, columnas, o lo que usted especifique. GetSchema válidos los argumentos para SQLite incluyen:

  • MetaDataCollections
  • DataSourceInformation
  • DataTypes
  • ReservedWords
  • Catálogos
  • Columnas
  • índices
  • IndexColumns
  • Tablas
  • Vistas
  • ViewColumns
  • ForeignKeys
  • disparadores
+3

Según [esta publicación de stackoverflow] [1], getSchema no funciona para SQLite. Tuve el mismo problema y ahora estoy usando "SQLiteCommand (" PRAGMA table_info ('tracks') ", DB)" [1]: http://stackoverflow.com/questions/3268986/getting-table-schema- doesnt-seem-work-with-system-data-sqlite –

+0

@ RU-Bn, lo intenté de nuevo, funciona bien (al menos con el proveedor oficial System.Data.SQLite) –

+0

Thx @Thomas pero supongo que es específico para alguna configuración (dura o blanda) que algunos de nosotros tenemos. (Utilizando la versión del proveedor 1.0.65) Y también lo mencioné como una copia de seguridad/salto rápido para futuros usuarios con el mismo problema. (Sin descrédito significó ;-)) –

Cuestiones relacionadas