.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
.
새로운 DataRow을 만들어 Rows 컬렉션에 추가하여 원하는 DataTable에 새 레코드를 추가합니다.
새 행을 추가한 후 메서드를 호출합니다DataTable
TableAdapter.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");
명령 개체를 사용하여 새 레코드 삽입
명령 개체를 사용하여 데이터베이스에 직접 새 레코드를 삽입할 수 있습니다.
- 새 명령 개체를 만든 다음, 해당
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();