다음을 통해 공유


.NET Framework 애플리케이션의 데이터베이스에 새 레코드 삽입

TableAdapter 메서드를 사용하는 것은 .NET Framework 프로젝트에서 ADO.NET를 사용하여 데이터베이스에 새 레코드를 삽입하는 경우에 일반적입니다. 애플리케이션과 데이터베이스 간의 통신을 TableAdapter가 사용 가능하도록 합니다. 이는 애플리케이션의 요구 사항에 따라 새 레코드를 데이터베이스에 삽입하기 위한 다양한 방법을 제공합니다. TableAdapter.Update 메서드 또는 TableAdapter DBDirect 메서드(특히 TableAdapter.Insert 메서드) 중 하나를 사용할 수 있습니다.

ADO.NET 및 .NET Framework로 빌드된 애플리케이션의 데이터베이스에 레코드를 삽입하기 위해 VB(Visual Basic) 또는 C#을 사용하는 방법을 이 문서에서 설명합니다. 애플리케이션 구성에서 Entity Framework 6을 사용하는 경우 컨텍스트에 새 엔터티 추가하기, 또는 Entity Framework Core를 사용하는 경우 데이터 추가하기를 참조하세요.

참고 항목

데이터 집합 및 관련 클래스는 2000년대 초반에 적용된 레거시 .NET Framework 기술로, 응용 프로그램이 데이터베이스에서 연결이 끊어진 동안 응용 프로그램이 메모리의 데이터로 작업할 수 있도록 합니다. 해당 기술은 사용자가 데이터를 수정하고 변경 내용을 다시 데이터베이스에 유지할 수 있도록 하는 애플리케이션에 특히 유용합니다. 데이터 세트는 매우 성공적인 기술로 입증되었지만 새 .NET 애플리케이션은 Entity Framework Core를 사용하는 것이 좋습니다. Entity Framework는 표 형식 데이터를 개체 모델로 사용하는 더 자연스러운 방법을 제공하며 더 단순한 프로그래밍 인터페이스를 제공합니다.

필수 조건

삽입 메서드를 선택하세요

데이터베이스에 레코드를 삽입하는 방법은 애플리케이션 시나리오에 따라 여러 가지가 있습니다. 해당 옵션은 다음의 표에 요약되어 있습니다.

시나리오 접근 방식 주의
앱은 데이터를 저장하기 위해 데이터 세트를 사용합니다 모든 변경 내용을 데이터베이스에 보내기 위해 TableAdapter.Update 메서드를 사용합니다 업데이트, 삽입 및 삭제가 변경 내용에 포함됩니다.
앱은 데이터를 저장하기 위해 개체를 사용합니다 새 레코드를 데이터베이스에 삽입하기 위해 TableAdapter.Insert 메서드를 사용합니다 새 레코드 만들기를 보다 세밀하게 제어하기 위해 이 방법을 사용할 수 있습니다.
앱은 TableAdapters를 사용하며, Insert 메서드는 사용 불가능합니다 TableAdapter를 다시 생성하기 위해 데이터 세트 디자이너 내에서 TableAdapter GenerateDBDirectMethods 속성을 true(으)로 설정한 다음 데이터 세트를 저장합니다 Insert 메서드가 TableAdapter에 없는 경우, TableAdapter가 저장 프로시저를 사용하도록 구성되거나 해당 GenerateDBDirectMethods 속성이 false(으)로 설정됩니다.
TableAdapter를 다시 생성한 후에도 Insert 메서드를 사용 불가능하다면, 해당 테이블이 개별 행을 구별할 수 있는 충분한 스키마 정보를 제공하지 않는 것일 수 있습니다(예를 들어, 테이블에 기본 키가 설정되어 있지 않을 수 있습니다).
앱이 TableAdapters를 사용하지 않습니다 새 레코드를 데이터베이스에 삽입하기 위해 명령 개체를 사용합니다 예: SqlCommand

TableAdapter를 사용하여 새 레코드 삽입

응용 프로그램에서 데이터 집합을 사용하여 데이터를 저장하는 경우 데이터 집합에서 원하는 DataTable 레코드에 새 레코드를 추가한 다음 메서드를 호출 TableAdapter.Update 할 수 있습니다. TableAdapter.Update 메서드는 데이터베이스에 DataTable의 모든 변경 내용을 보냅니다. 이 내용은 수정 및 삭제된 레코드를 포함합니다.

TableAdapter.Update 메서드를 통해 새 레코드를 삽입합니다

새 레코드를 데이터베이스에 삽입하기 위해 TableAdapter.Update 메서드를 사용하는 방법을 다음 절차에서 보여 줍니다.

  1. DataRow를 만들고 Rows 컬렉션에 추가하여 원하는 DataTable에 새 레코드를 추가합니다.

  2. DataTable에 새 행을 추가한 다음, TableAdapter.Update 메서드를 호출합니다. 업데이트할 데이터의 양을 제어하기 위해 다음 매개 변수 값 중 하나를 전달할 수 있습니다.

    다음 코드에서는 DataTable에 새 레코드를 추가한 다음, TableAdapter.Update 메서드를 호출하여 새 행을 데이터베이스에 저장하는 방법을 보여 줍니다. Northwind 데이터베이스의 Region 테이블을 이 예제에서 사용합니다.

    // 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 메서드를 사용하는 방법을 다음 절차에서 보여 줍니다. 이 예제에서는 Northwind 데이터베이스의 Region 테이블에 데이터를 삽입합니다.

참고 항목

사용 가능한 인스턴스가 없는 경우, 사용하려는 TableAdapter를 인스턴스화합니다.

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

regionTableAdapter.Insert(5, "NorthWestern");

명령 개체를 통해 새 레코드를 삽입합니다

데이터베이스에 직접 새 레코드를 삽입하기 위해 명령 개체를 사용할 수 있습니다.

  • 새 명령 개체를 만든 다음, 해당 Connection, CommandType, CommandText 속성을 설정합니다.

레코드를 데이터베이스에 삽입하기 위해 명령 개체를 사용하는 방법을 다음 절차에서 보여 줍니다. 이 예제에서는 데이터를 Northwind 데이터베이스의 Region 테이블에 삽입합니다.

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();