;)

ел бы прочитать информацию о таблице и столбце в приложении C # .NET Windows. Я знаю, что есть базовый доступ SMO для SQL Server. На подобном основании есть ли API для SQLite?

 Thomas Levesque22 янв. 2011 г., 23:03
@ Мартин Буберл, это не тот вопрос ... ОП не ищет поставщика ADO.NET, он спрашивает, как получить доступ к метаданным базы данных.
 Martin Buberl22 янв. 2011 г., 22:30

Ответы на вопрос(1)

Решение Вопроса

Вы можете использовать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 возвращает DataTable, который содержит информацию о таблицах, столбцах или обо всем, что вы укажете. действительныйGetSchema аргументы для SQLite включают в себя:

MetaDataCollectionsDataSourceInformationТипы данныхReservedWordsКаталогиКолонныИндексыIndexColumnsтаблицыПросмотрыViewColumnsForeignKeysТриггеры
 e-motiv17 июл. 2013 г., 16:20
Thx @Thomas, но я думаю, что это специфично для некоторых (жестких или мягких) конфигураций, которые есть у некоторых из нас. (Использование провайдера версии 1.0.65) И я также упомянул это как резервное копирование / быстрый переход для будущих пользователей с такой же проблемой. (Дискредитация не подразумевается ;-))
 Bruno Bieri30 нояб. 2017 г., 16:24
@ThomasLevesque, как мне выяснить, какие столбцы вDataTable tables = connection.GetSchema("Tables"); ?
 Thomas Levesque03 дек. 2017 г., 20:53
@BrunoBieri просто перечислитьtables.Columns ;)
 Thomas Levesque15 июл. 2013 г., 14:22
@ R-U-Bn, я только что попробовал еще раз, он отлично работает (по крайней мере, с официальным провайдером System.Data.SQLite)
 e-motiv15 июл. 2013 г., 13:18
Согласно [этому сообщению stackoverflow] [1], getSchema не работает для SQLite. У меня была такая же проблема, и теперь я использую "SQLiteCommand (" PRAGMA table_info ('track') ", DB)" [1]:stackoverflow.com/questions/3268986/...

Ваш ответ на вопрос