Поделиться через


Вставка новых записей в базу данных в приложениях .NET Framework

Чтобы вставить новые записи в базу данных с ADO.NET в проекте .NET Framework, распространенный подход — использовать методы TableAdapter . TableAdapters обеспечивают взаимодействие между приложением и базой данных. Они предоставляют различные способы вставки новых записей в базу данных в зависимости от требований приложения. Вы можете использовать метод TableAdapter.Update или один из методов TableAdapter DBDirect (а именно метод TableAdapter.Insert).

В этой статье описывается, как вставить записи в базу данных для приложения, созданного с помощью ADO.NET и .NET Framework с помощью Visual Basic (VB) или C#. Если конфигурация приложения использует Entity Framework 6, см. статью "Добавление новой сущности в контекст" или "Entity Framework Core", см. статью "Добавление данных".

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

Предпосылки

Выбор метода вставки

Существуют различные подходы для вставки записей в базу данных в зависимости от сценария приложения. В следующей таблице перечислены параметры:

Сценарий Подход Примечания.
Приложение использует наборы данных для хранения данных Используйте метод TableAdapter.Update для отправки всех изменений в базу данных. Изменения включают обновления, вставки и удаления.
Приложение использует объекты для хранения данных Использование метода TableAdapter.Insert для вставки новых записей в базу данных Такой подход позволяет более точно контролировать создание новых записей.
Приложение использует TableAdapters, Insert метод недоступен Установите для свойства GenerateDBDirectMethods TableAdapter значение true в конструкторе наборов данных и сохраните набор данных, чтобы воссоздать TableAdapter. Если в TableAdapter нет метода Insert, TableAdapter либо настроен для использования хранимых процедур, либо свойству GenerateDBDirectMethods задано значение false.
Insert Если метод остается недоступным после повторного создания TableAdapter, таблица, вероятно, не предоставляет достаточно сведений о схеме, чтобы различать отдельные строки (например, в таблице может быть не задан первичный ключ).
Приложение не использует TableAdapters Использование объектов команд для вставки новых записей в базу данных Пример: SqlCommand

Вставка новых записей с помощью TableAdapters

Если приложение использует наборы данных для хранения данных, можно добавить новые записи в нужный DataTable набор данных, а затем вызвать TableAdapter.Update метод. Метод TableAdapter.Update отправляет все изменения в DataTable базу данных, включая измененные и удаленные записи.

Вставка новых записей с помощью метода TableAdapter.Update

В следующей процедуре показано, как вставить новые записи в базу данных с помощью TableAdapter.Update метода:

  1. Добавьте новые записи в нужное DataTable , создав новую DataRow и добавив ее в коллекцию Rows .

  2. После добавления новых строк в DataTable, вызовите метод TableAdapter.Update. Вы можете контролировать объем данных для обновления, передав одно из следующих значений параметров:

    В следующем коде показано, как добавить новую запись в базу DataTable данных, а затем вызвать TableAdapter.Update метод для сохранения новой строки в базе данных. В этом примере используется таблица Region в базе данных Northwind.

    // Create a new row.
    NorthwindDataSet.RegionRow newRegionRow;
    newRegionRow = northwindDataSet.Region.NewRegionRow();
    newRegionRow.RegionID = 5;
    newRegionRow.RegionDescription = "NorthWestern";
    
    // Add the row to the Region table
    this.northwindDataSet.Region.Rows.Add(newRegionRow);
    
    // Save the new row to the database
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Вставка новых записей с помощью метода TableAdapter.Insert

Если приложение использует объекты для хранения данных, можно использовать TableAdapter.Insert метод для создания новых строк непосредственно в базе данных. Метод Insert принимает отдельные значения для каждого столбца в качестве параметров. При вызове метода новая запись вставляется в базу данных со значениями переданных параметров.

  • Вызовите метод TableAdapter Insert и передайте значения для каждого столбца в качестве параметров.

В следующей TableAdapter.Insert процедуре показано, как использовать метод для вставки строк. В этом примере данные вставляются в таблицу Region в базе данных Northwind.

Замечание

Если у вас нет доступного экземпляра, создайте экземпляр TableAdapter, который вы хотите использовать.

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
    new NorthwindDataSetTableAdapters.RegionTableAdapter();

regionTableAdapter.Insert(5, "NorthWestern");

Вставка новых записей с объектами команд

Новые записи можно вставить непосредственно в базу данных с помощью объектов команд.

  • Создайте объект команды, а затем задайте его свойства Connection, CommandType и CommandText.

В следующей процедуре показано, как вставить записи в базу данных с помощью объекта команды. В этом примере данные вставляются в таблицу Region в базе данных Northwind.

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();