Способы добавления записей в Access

591
03 февраля 2017, 03:09

Для добавления записей в Access использую код:

string connStringAcc = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", textBox2.Text); // textBox2.Text - путь к базе
            using (OleDbConnection connAcc = new OleDbConnection(connStringAcc))
            {
                connAcc.Open();
                OleDbCommand command1 = new OleDbCommand
                    ("INSERT INTO " + textBox10.Text + // ТАБЛИЦА
                    "(" + textBox15.Text + // ПОЛЯ
                    ") VALUES"
                    + "('"
                    +
                      pol_1 + "', '" + pol_2
                    +
                    "')",
                    connAcc); 
                    command1.ExecuteNonQuery();

Есть другие способы добавления записей в Access?

Answer 1

Имеется достаточно неплохое руководство на 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, то Вы не заметите той громоздкости, которая окутывает Вас сейчас, выглядит это не так уж и плохо. Думаю именно от этого и начинаются поиски других подходов.

Также, думаю, что будут полезны следующие ссылки:

  1. Общие сведения об адаптере таблиц
  2. Класс SqlCommand
  3. Класс DataTable
Answer 2

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

microsoft dao 3.6 object

Если важна скорость, то можно использовать библиотеку microsoft dao 3.6 object library.

Вот тут пруф скорости.

Я сам убедился на практике, что он быстрее.

Работа с ним похожа на ваш код, заисключеним того, что эта сборка COM=> нужно следить за закрытием соединений.

Interop

Можно так же работать с Access через Interop.

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

Этот способ дает еще больше возможностей, так как вы получаете доступ к объектам Access, например запросы и модули.

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

Но опять же, нужно следить за объектами, так как это тот же COM...

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

Dapper

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

С ним код выглядит яснее и лаконичнее.

READ ALSO
Восстановить значения после XOR

Восстановить значения после XOR

Ниже приведён код, нужно из полученного значения восстановить значения '47533', '23182', '52170'

438
WordPress сортировка по произвольным полям

WordPress сортировка по произвольным полям

Прошу помочь разобраться с сортировкой, Мне нужно, чтобы при условии $_SESSION['sort_opoz']=='rate', после сортировки по произвольному полю ratings_average, происходила...

625
sqlsrv_fetch_array() expects parameter 1 to be resource

sqlsrv_fetch_array() expects parameter 1 to be resource

Доброго времени суток! встала задача перенести небольшой проект с php+mysql на iis 8+mssql,уткнулся в стену со следующей строчкой :

430
Symfony (strict) validation

Symfony (strict) validation

Собственно вопрос, условно создается валидатор который принимает объект

420