MS Access DB не сохраняет изменения после выполнения (C #) - PullRequest
1 голос
/ 06 марта 2011

У меня есть следующий код для использования базы данных доступа

 OleDbConnection con = new OleDbConnection(myproject.Properties.Settings.Default.myDBConnectionString);
 con.Open();
 OleDbCommand command = new OleDbCommand("INSERT INTO components (name) VALUES (@p_col1)", con);
 command.Parameters.Add("@p_col1", OleDbType.VarChar).Value = "test row";
 int rows = command.ExecuteNonQuery();

На данный момент значение строки равно 1, и когда я делаю запросы на выборку, после этого вставленная строка становится доступной.Проблема возникает, когда программа завершает свою работу: в последующих выполнениях этой строки больше нет.

Я пробовал с транзакциями

OleDbTransaction transaction = con.BeginTransaction();
command.Transaction = transaction;
transaction.Commit();

и с использованием DataSets и ADO таким образом

//... add row to dataset ...
OleDbDataAdapter sda = new OleDbDataAdapter("select * from components", con);
OleDbCommandBuilder cb = new OleDbCommandBuilder(sda);

sda.Update(ds.Components); //tried with ds.Components.AcceptChanges(); before and after this line

но в каждом случае у меня возникает одна и та же проблема, кажется, что запрос вставки не выполняется в реальной базе данных.Знаете, почему это может происходить ???

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 06 марта 2011

База данных находится в вашем каталоге bin? Это тоже часть вашего проекта? Я видел, как это происходило, когда каждый раз, когда вы собираете его, он перезаписывает базу данных в вашем каталоге bin на базу данных из каталога проекта, поэтому кажется, что вещи не сохраняются.

0 голосов
/ 27 июля 2013

MS Visual Studio встраивает БД Access в продукт.--- Продукт находится в вашем каталоге bin.--- Чтобы просмотреть все изменения в вашей БД через приложение, используйте это. Когда вы изначально добавляете БД в проект, она всегда обновляет продукт при сборке.Это может быть хорошо, но я нахожу это довольно раздражающим.Чтобы это исправить: выберите MS Access DB в обозревателе решений, нажмите F4, чтобы перейти к его свойствам, измените поле «Копировать в выходной каталог» на «Копировать, если новее» вместо «Всегда».

0 голосов
/ 06 марта 2011

Может быть несколько баз данных, и вы не вставляете в ту, в которую, как вы думаете, вы вставляете.

...