Способи додавання записів в access - stack overflow російською
@Denis Bubnov Поки освоюю, тому може питання не логічне. Але хочу подивитися як буде працювати база з максимальною кількістю записів. Для цього хочу записати
500 000 записів. Через описаний мною код, записи додаються довго. Тому і питаю: може інші способи є - koverflow 2 Лютого в 10:18
Є досить непогане керівництво на MSDN: Практичний посібник. Вставка нових записів в базу даних. в якому є такі пункти:
Вставка нових записів за допомогою адаптерів таблиць
У цьому пункті все досить просто. Є два підходи для вставки даних в потрібну таблицю DataTable в наборі даних, за допомогою TableAdapter.Update і TableAdapter.Insert. Для цього знадобиться екземпляр DataTable. який буде використовуватися в якості адаптера таблиць.
Для вставки нових записів в базу даних за допомогою методу TableAdapter.Update:
- Додайте нові записи в потрібні таблиці DataTable шляхом створення нових рядків DataRow і додавання їх до колекції Rows. Додаткові відомості див. У розділі Практичний посібник. Додавання рядків в об'єкт DataTable.
- Після додавання нових рядків у DataTable викличте метод TableAdapter.Update. Можна перевірити кількість даних для оновлення шляхом передачі всього DataSet. DataTable. масиву DataRow або однієї DataRow.
Для вставки нових записів в базу даних за допомогою методу TableAdapter.Insert:
- Викличте метод адаптера таблиць Insert. передавши значення для кожного стовпця в якості параметрів.
Вставка нових записів за допомогою командних об'єктів
Тобто нові записи будуть вставлятися безпосередньо в базу даних за допомогою командних об'єктів. Тобто створити SqlConnection. відкрити з'єднання, виконати команду і закрити. В принципі те, що Ви робите вже у себе.
Для вставки нових записів в базу даних за допомогою командних об'єктів:
- Створіть новий командний об'єкт, задавши його властивості 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.
З ним код виглядає ясніше і лаконічніше.