Вставить запрос OleDB C # - PullRequest
       34

Вставить запрос OleDB C #

3 голосов
/ 21 февраля 2011

Я знаю, это было уже 1000000000 раз, но ни одно решение не помогло мне. Я хочу вставить данные в C #, используя OleDB.Я пробовал миллионы решений, но вот самое простое, которое должно работать, но это не так:

 SQLCONNECTION = @"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\dbScenariusz.mdb";

 using (OleDbConnection connection = new OleDbConnection(SQLCONNECTION))
            {
                string sql = "INSERT INTO Table (content) VALUES('lala')";
                connection.Open();
                OleDbCommand command = new OleDbCommand(sql, connection);
                command.ExecuteNonQuery();
                connection.Close();
            }

SQLCONNECTION в порядке.Он отлично работает для запроса SELECT.

строка sql - я пробовал этот запрос в Access, и он отлично работает.

Я получаю без ошибок ,Он просто ничего не вставил в базу данных.Когда я запускаю запрос в Access (той же базе данных), строка вставляется.

Странно то, что command.ExecuteNonQuery (); возвращает 1!Это означает, что была затронута 1 строка!

Я действительно понятия не имею, в чем проблема, поэтому я действительно ценю любую помощь.Извините за мой английский.

ОБНОВЛЕНИЕ: Еще одна странная вещь.Я меняю запрос на обновление, и он отлично работает!действительно ВТФ?:)

Ответы [ 3 ]

3 голосов
/ 21 февраля 2011

Вы подключаетесь к DataDirectory. Файл .mbd копируется после сборки? Другими словами, вы повторно развертываете базу данных при каждой сборке и тем самым теряете вставки?

Быстрая проверка может использовать тот же код и то же соединение для выбора после вставки.

2 голосов
/ 01 февраля 2013

В обозревателе решений установите флажок app.config.Дважды щелкните app.config, затем повторно введите connectionString.Укажите путь к вашей базе данных.Например, в моем проекте расположение по умолчанию connectionString:

connectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = | DataDirectory | \ App_Data \ database.accdb; Persist SecurityInfo = True "

Предположим, база данных хранится в этом месте:

C: \ Documents and Settings \ Amuk \ Мои документы \ Visual Studio 2010 \ Projects \ inserttion\ inserttion \ App_Data

поэтому замените connectionString на

connectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = C: \ Documents and Settings\ Amuk \ Мои документы \ Visual Studio 2010 \ Проекты \ inserttion \ inserttion \ App_Data \ database.accdb; Persist Security Info = True "

Ваша проблема будет решена, я надеюсь, что она определенно поможет вамЯ также получал ту же проблему, и заменив connectionString на исходный путь, база данных хранит все записи.

0 голосов
/ 21 февраля 2011

Вы можете попытаться использовать транзакцию для фиксации ваших изменений.

command.Transaction = connection.BeginTransaction(); //after connection.open()

Затем добавьте

command.Transaction.Commit(); //Before connection.close()
...