Таблица данных в МДБ - PullRequest
       13

Таблица данных в МДБ

1 голос
/ 08 января 2010

У меня есть в памяти DataTable в C #. Я хочу сохранить локальную копию этого файла в моей файловой системе и извлечь ее. Эта таблица данных C # захватывает результаты из формулы Excel и сохраняет ее. Когда снова откроется тот же файл Excel, я хочу загрузить данные. Эта таблица похожа на локальный кеш, который я хочу использовать повторно.

Как записать файлы данных C # в Datatable файлы .mdb и загрузить определенную таблицу, когда файл Excel с тем же именем загружается снова?

1 Ответ

2 голосов
/ 08 января 2010

Использование ADO.NET

Архитектура ADO.NET ( обзор , образец )

Множество примеров (например, приведенных ниже) доступны в Интернете по ключевым словам Googling в ADO.NET (многие из которых есть в этом ответе).

Общий процесс заключается в выборе поставщика данных, совместимого с MSAccess. В этом случае мы выбираем OleDb в пространстве имен using System.Data.OleDb;

Общий поток ADO.NET:

  • Создание объекта подключения - расположение и параметры безопасности для входа в базу данных
  • Создайте Командный объект для представления действия с базой данных (например, Вставка, Обновление, Удаление, Выбор). Здесь также используется SQL.
  • Выполнить команду ( Выполнить ее ) через соединение, чтобы повлиять на базу данных (или запросить данные из нее)
  • необходимо повторить команды в базе данных
  • Закройте соединение.

Создайте подходящую строку подключения для Access, либо создайте ее с помощью инструментов графического интерфейса пользователя (например, Visual Studio), либо найдите ее на сайте, подобном ConnectionString.com (страница доступа)

Следующий пример очень общий, и вам нужно будет настроить его под свои нужды. Есть много вариантов того, как это сделать. Для простоты этот ответ выбирает короткое средство.

using System; 
using System.Data;   // for DataTable, DataSet
using System.Data.OleDb;  // for ADO.NET OLEDb provider

void SaveMyDataTable(DataTable datTable) {

    string strConnection = "your connection string to Access";

    // Make connection.
    OleDbConnection conn = new OleDbConnection(strConnection);
    conn.Open();

    try {
        OleDbCommand cmd = conn.CreateCommand();

        // Create table in Access.
        cmd.CommandText = "CREATE TABLE SomeTable("
                + "Field1 int,"
                + "ThisField varchar(255)"
                + "ThatField varchar(255)"
                + ")";
        cmd.ExecuteNonQuery();

        /* Insert data from datatable.
         * (You'll have to pull data out of your DataTable row
         *  and use it here.)
         */

        cmd.CommandText = "INSERT INTO SomeTable VALUES (1, 'a','b')";
        cmd.ExecuteNonQuery();
        cmd.CommandText = "INSERT INTO SomeTable VALUES (3, 'd','e')";
        cmd.ExecuteNonQuery();
        //etc... (maybe make a loop over the rows in your DataTable)

        conn.Close();
    }
    finally {
        conn.Close();
    }

}

Другой путь ADO.NET

Альтернатива в ADO.NET

Класс OleDbDataAdapter - часть архитектуры ADO.NET служит адаптером между DataSet , который содержит DataTables и совместимые источники данных Ole db (например, Access).

Это немного сложнее настроить, и вам нужно будет его исследовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...