SqlDataAdapter를 사용하여 데이터베이스에 행을 삽입하려고합니다. CustomerOrders 데이터베이스에 2 개의 테이블 (Custormers & Orders)이 있으며 1,000 개가 넘는 레코드가 있습니다. 새로운 고객 & 주문을 데이터베이스에 추가하기위한 GUI (TextBoxes)를 각각의 테이블에 만들고 싶습니다.SqlDataAdapter를 사용하여 행 삽입
- 어떻게해야합니까?
나는 보통 다음에 방법을
dataAdapter = new SqlDataAdapter (sqlQuery, conn);
dataSet = new DataSet();
da.Fill(dataSet);
이제 텍스트 상자에서 값을 (또는 데이터 바인딩을 사용) 데이터 집합에 새 행을 추가하고 전화를 추측
da.Update(dataSet);
하지만 질문은 왜 da.Fill (dataSet)을 사용하여 다른 모든 레코드를 dataSet으로 가져와야합니까? 난 단지 하나의 새로운 기록을 추가하고 싶다.
내가하고있는 일은 DataSet에서 데이터베이스 스키마 만들기입니다. 다음과 같이하십시오 :
DataSet customerOrders = new DataSet("CustomerOrders");
DataTable customers = customerOrders.Tables.Add("Customers");
DataTable orders = customerOrders.Tables.Add("Orders");
customers.Columns.Add("CustomerID", Type.GetType("System.Int32"));
customers.Columns.Add("FirstName", Type.GetType("System.String"));
customers.Columns.Add("LastName", Type.GetType("System.String"));
customers.Columns.Add("Phone", Type.GetType("System.String"));
customers.Columns.Add("Email", Type.GetType("System.String"));
orders.Columns.Add("CustomerID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderID", Type.GetType("System.Int32"));
orders.Columns.Add("OrderAmount", Type.GetType("System.Double"));
orders.Columns.Add("OrderDate", Type.GetType("System.DateTime"));
customerOrders.Relations.Add("Cust_Order_Rel", customerOrders.Tables["Customers"].Columns["CustomerID"], customerOrders.Tables["Orders"].Columns["CustomerID"]);
이 열을 각각의 텍스트 상자에 바인딩하는 데 DataBinding을 사용했습니다. 이제 혼란스러워! 다음에 무엇을해야합니까? 삽입 명령을 사용하는 방법? dataAdapter.SelectCommand를 제공하지 않았으므로 dataAdapter.Update()가 작동하지 않을 것입니다. 올바른 접근법을 제안하십시오.
"WHERE 0 = 1"은 생명의 은인이었습니다. (2GB의 미디어 테이블을 메모리에로드하는 중 ... 한숨) – pkExec
'new SqlCommandBuilder (dataAdapter);'라는 라인에 흥미가있어 - 어떤 마술이 일어나서 INSERT 전체를 스크립트 할 필요가 없다. 진술. 감사! –
dataSet.Tables [ "Customers"]. (newRow)를 추가하십시오. 컴파일되지 않습니다. "System.Data.DataTable에 'Add'에 대한 정의가 없습니다. dataSet.Tables [tableName] .Rows.Add (newRow);를 의미합니까? –