다음을 통해 공유


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

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

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

비고

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

필수 조건

  • TableAdapter 메서드를 사용하려면 사용 가능한 인스턴스가 있어야 합니다. 자세한 내용은 .NET Framework 애플리케이션에서 TableAdapters 만들기 및 구성을 참조하세요.

  • .NET 보안: 연결하려는 데이터베이스에 대한 액세스 권한과 원하는 테이블에 삽입을 수행할 수 있는 권한이 있어야 합니다.

삽입 방법 선택

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

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

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

애플리케이션에서 데이터 세트를 사용하여 데이터를 저장하는 경우 원하는 DataTable에 새 레코드를 데이터 세트에 추가하고, 그런 다음 TableAdapter.Update 메서드를 호출할 수 있습니다. 이 TableAdapter.Update 메서드는 수정된 레코드와 삭제된 레코드를 포함하여 모든 변경 내용을 DataTable에 데이터베이스로 전송합니다.

TableAdapter.Update 메서드를 사용하여 새 레코드 삽입

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

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

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

    다음 코드에서는 새 레코드를 a 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");

명령 개체를 사용하여 새 레코드 삽입

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

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

다음 절차에서는 명령 개체를 사용하여 데이터베이스에 레코드를 삽입하는 방법을 보여 줍니다. 다음은 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();