Добавьте insertcommand в dataadapter с помощью sqlitecommandbuilder
Я пытаюсь сгенерировать InsertCommand для SqliteDataAdapter, но получил эту ошибку:
Unhandled Exception: System.InvalidOperationException: Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information.
Что я уже пробовал:
using Mono.Data.Sqlite; public void Test(){ var dataAdapter = new SqliteDataAdapter(); var dataSet = new DataSet("TestTable"); SqliteCommandBuilder commandBuilder = new SqliteCommandBuilder(dataAdapter); SqliteConnection connection = new SqliteConnection(); connection.ConnectionString = "Data Source=" + dbPath; connection.Open(); dataAdapter.SelectCommand = connection.CreateCommand(); //dataAdapter.SelectCommand.CommandText = "SELECT * FROM TestTable"; dataAdapter.SelectCommand.CommandText = "SELECT [ID], [Name] FROM TestTable"; dataAdapter.InsertCommand = commandBuilder.GetInsertCommand(); // ERROR }
Создать скрипт таблицы:
CREATE TABLE `TestTable` ( `ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `Name` TEXT NOT NULL );
Данные в таблице
1 'Pedro'
Кто-нибудь может помочь?
ZurdoDev
Это означает, что он не поддерживается. Разбейте свой sql на различные вызовы.
Desintrinski
Вы имеете в виду создать вручную команду обновления, удаления и вставки?
ZurdoDev
Да, сначала используйте обычный объект SqlCommand для создания таблицы.
Desintrinski
Я не нахожу никакой информации, что sqlite не поддерживает то, что я пытаюсь сделать. Не могли бы вы назвать мой единственный источник?
ZurdoDev
Ошибка говорит вам, что он не поддерживается в DataAdapters.
IndianaRags
То, что у вас есть, правильно, только в неправильной последовательности. Адаптер должен иметь SelectCommand, прежде чем можно будет создать CommandBuilder. Переместите строку CommandBuilder после команды SelectCommand, и она будет работать.
Desintrinski
Спасибо за ответ, но это не сработало, получил ту же ошибку.