2015-08-11 4 views
0

Для моего проекта VB.Net я пытаюсь добавить поддержку базы данных SQLite. Я установил System.Data.SQLite.dll через NuGet и VS 2010.DataSourcesTableAdapters подключение к SQLite

Я могу успешно подключиться к базе данных SQLite и запустить некоторые запросы непосредственно против нее. Однако я не могу загрузить какие-либо данные в свои DataSourcesTableAdapters. Я получаю, что поставщик «System.Data.SQLite» не зарегистрирован на локальной машине ». как только я попытаюсь заполнить таблицу данных.

Все работает нормально, когда я использую свой исходный файл данных MS Access.

Целевой процессор x86

System.Data.SQLite.dll копируется в локальную папку приложения

Stack Trace: 
    at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(constr As OleDbConnectionString, datasrcWrapper As DataSourceWrapper&) 
    at System.Data.OleDb.OleDbConnectionInternal..ctor(constr As OleDbConnectionString, connection As OleDbConnection) 
    at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(options As DbConnectionOptions, poolGroupProviderInfo As Object, pool As DbConnectionPool, owningObject As DbConnection) 
    at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(owningConnection As DbConnection, poolGroup As DbConnectionPoolGroup) 
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(owningConnection As DbConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(outerConnection As DbConnection, connectionFactory As DbConnectionFactory) 
    at System.Data.OleDb.OleDbConnection.Open() 
    at System.Data.Common.DbDataAdapter.QuietOpen(connection As IDbConnection, originalState As ConnectionState&) 
    at System.Data.Common.DbDataAdapter.FillInternal(dataset As DataSet, datatables As DataTable[], startRecord As Int32, maxRecords As Int32, srcTable As String, command As IDbCommand, behavior As CommandBehavior) 
    at System.Data.Common.DbDataAdapter.Fill(dataTables As DataTable[], startRecord As Int32, maxRecords As Int32, command As IDbCommand, behavior As CommandBehavior) 
    at System.Data.Common.DbDataAdapter.Fill(dataTable As DataTable) 
    at LisanoEnterprises.GrandPrix.DataSourcesTableAdapters.RostersTableAdapter.GetDataByRound(Round As Int32) 
    at LisanoEnterprises.GrandPrix.ReportCtrl.ViewRosters(objReportCriteria As ReportCriteria) 
    at LisanoEnterprises.GrandPrix.frmReports.ViewRoster() 
    at LisanoEnterprises.GrandPrix.frmReports.ViewReport(iCategory As Int32, iReportNum As Int32) 
    at LisanoEnterprises.GrandPrix.frmReports.btnMainView_Click(sender As Object, e As EventArgs) 

Exception Hierarchy: 
Top Level System.InvalidOperationException Void GetDataSource(System.Data.OleDb.OleDbConnectionString, System.Data.OleDb.DataSourceWrapper ByRef) 
    The 'System.Data.SQLite' provider is not registered on the local machine. 

ответ

0

мне удалось обойти эту проблему. Вместо использования адаптеров таблицы я загружаю таблицу данных из устройства чтения данных.

Dim reader As IDataReader = _dbCtrl.ExecuteReader(sSQL) 
    Dim dt As New DataTable 

    dt.Load(reader) 

    reader.Close()