Способи додавання записів в access - stack overflow російською

@Denis Bubnov Поки освоюю, тому може питання не логічне. Але хочу подивитися як буде працювати база з максимальною кількістю записів. Для цього хочу записати

500 000 записів. Через описаний мною код, записи додаються довго. Тому і питаю: може інші способи є - koverflow 2 Лютого в 10:18

Є досить непогане керівництво на MSDN: Практичний посібник. Вставка нових записів в базу даних. в якому є такі пункти:

Вставка нових записів за допомогою адаптерів таблиць

У цьому пункті все досить просто. Є два підходи для вставки даних в потрібну таблицю DataTable в наборі даних, за допомогою TableAdapter.Update і TableAdapter.Insert. Для цього знадобиться екземпляр DataTable. який буде використовуватися в якості адаптера таблиць.

Для вставки нових записів в базу даних за допомогою методу TableAdapter.Update:

  1. Додайте нові записи в потрібні таблиці DataTable шляхом створення нових рядків DataRow і додавання їх до колекції Rows. Додаткові відомості див. У розділі Практичний посібник. Додавання рядків в об'єкт DataTable.
  2. Після додавання нових рядків у DataTable викличте метод TableAdapter.Update. Можна перевірити кількість даних для оновлення шляхом передачі всього DataSet. DataTable. масиву DataRow або однієї DataRow.

Для вставки нових записів в базу даних за допомогою методу TableAdapter.Insert:

  1. Викличте метод адаптера таблиць Insert. передавши значення для кожного стовпця в якості параметрів.

Вставка нових записів за допомогою командних об'єктів

Тобто нові записи будуть вставлятися безпосередньо в базу даних за допомогою командних об'єктів. Тобто створити SqlConnection. відкрити з'єднання, виконати команду і закрити. В принципі те, що Ви робите вже у себе.

Для вставки нових записів в базу даних за допомогою командних об'єктів:

  1. Створіть новий командний об'єкт, задавши його властивості Connection. CommandType і CommandText.

Необхідно мати доступ до бази даних, до якої ви намагаєтеся підключитися, а також дозвіл на вставку записів в потрібну таблицю. Ну, думаю це і так зрозуміло.

Що стосується підходу з OleDbConnection. звичайно, на перший погляд, він здається незручним і громіздким, але якщо все винести в окремі методи і красиво оформити, наприклад зробити універсальні методи для вставки, вибірки і видалення об'єктів і винести в окремий клас, щось на подобі Helper, то Ви не помітите тієї громіздкість, яка огортає Вас зараз, виглядає це не так вже й погано. Думаю саме від цього і починаються пошуки інших підходів.

Також, думаю, що будуть корисні наступні посилання:

Так як очевидні способи перераховані, то наведу альтернативи:

microsoft dao 3.6 object

Якщо важлива швидкість, то можна використовувати бібліотеку microsoft dao 3.6 object library.

Ось тут пруф швидкості.

Я сам переконався на практиці, що він швидше.

Робота з ним схожа на ваш код, заісключеніем того, що ця збірка COM => потрібно стежити за закриттям з'єднань.

Можна так само працювати з Access через Interop.

Робота буде схожа, на те, як якщо б ви писали VBA модуль в Access, але на C #.

Цей спосіб дає ще більше можливостей, так як ви отримуєте доступ до об'єктів Access, наприклад запити і модулі.

Наприклад, ви можете виконати модуль Access з коду C #.

Але знову ж таки, потрібно стежити за об'єктами, так як це той же COM.

Для роботи на цільовій машині повинен стояти Office або Access Engine.

Можна скористатися Micro ORM Dapper, яка працює з тими об'єктами, які реалізують IDbConnection в тому числі і OleDbConnection.

З ним код виглядає ясніше і лаконічніше.