2009-08-25 2 views
0

나는 SQL 데이터베이스가 있으며 그 안에 샘플 테이블에 대한 데이터 집합을 만들었습니다.데이터 집합에 vb.net에 삽입 한 후 업데이트 된 행 수가 반영되어야하는시기

데이터 세트는 HotelDataSet2이며 데이터 테이블 어댑터는 Various_itemsTableAdapter입니다. 내가이

MsgBox(HotelDataSet2.various_items.Rows.Count) 
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked) 
Various_itemsTableAdapter.Fill(HotelDataSet2.various_items) 
MsgBox(HotelDataSet2.various_items.Rows.Count) 

는 이전의 1로 새로운 수를 보여주고 실행하면 이전과 inserting..But 후

MsgBox(HotelDataSet2.various_items.Rows.Count) 
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked) 
MsgBox(HotelDataSet2.various_items.Rows.Count) 

이 항상 같은 수를 반영한다. 그래서 나는 테이블 어댑터를 통해 테이블에 대한 데이터를 변경할 때마다 데이터 세트를 항상 다시 채워야한다고 결론을 냈습니다. ?? 그러면 그게 어떻게 유용할까요 ??

+0

답변, 이것은 당신이 볼 –

답변

1

잘못된 길로 가고 있습니다. DataSet을 사용하여 변경 사항을 적용해야합니다 (예 : 테이블에 DataRow을 작성하고 테이블에 해당 행 삽입). 에서 DataTableTableAdapter으로 전달하여 변경 사항을 데이터베이스에 유지하십시오. TableAdapter

tableAdapter.Update(dataSetName); 

호출 Insert 기능에 Update 함수를 호출 직접에만 삽입이 데이터베이스 자체의 테이블에 데이터; 데이터의 로컬 복사본 (예 : DataSet)에는 아무런 영향을 미치지 않습니다.

MsgBox과 같은 언어 관련 기능을 사용하지 않도록하십시오. 대신 메시지 상자를 표시하려면 MessageBox.Show(...)을 호출 해보십시오. 그 언어는 언어와 무관합니다.

명확히하기 위해 편집,이 작업을 수행하는 적절한 방법은, 새로운 DataRow를 만들 새 값으로 그 열을 채울 해당 테이블 DataRow은 다음 TableAdapter에 테이블을 통과 것을 추가하는 것입니다 Update 함수를 통해.

예를 들어

, 나는이 ...

A DataSet named myDataSet 
A DataTable in myDataSet called MyTable 
A TableAdapter for MyTable called myTableAdapter 
Two columns in that table, FirstName and LastName 
Two TextBoxes called txtFirstName and txtLastName 

내가이 할 것, 그 값으로 행을 삽입하려면 : 업데이트

DataRow row = myDataSet.MyTable.NewRow(); // creates a new row with the correct columns 

row["FirstName"] = txtFirstName.Text; 
row["LastName"] = txtLastName.Text; 

myDataSet.MyTable.Rows.Add(row); // adds the new row to the in-memory table 

myTableAdapter.Update(myDataSet); // persists all of the changes to the DataSet 
+0

더 명확해야 나는 listbox, listbox, checkbox 및 combo와 같은 텍스트 상자와 다른 폼 elemtns를 가지고 있는데, 사용자가 값을 입력 한 다음 데이터베이스에 삽입하게 할 것입니다. tableadapter.insert와 별도로 말할 수 있습니까? 그 밖의 선택은 무엇입니까? –

+0

감사합니다. 이제 더 의미가 있습니다. myTableAdapter.Update (myDataSet)를 수행하면 즉시 데이터베이스에 반영됩니다. 나는 더 많은 의구심이 있었고 상담하고 싶었습니다. 다른 곳으로 이메일이나 채팅을 할 수 있습니까? –

+0

예, 업데이트 명령에 전달하면 해당 시점에 데이터베이스가 변경됩니다. 상담에 관해서는 Stack Overflow에서 질문을 올리면 더 나은 응답을 얻을 수 있습니다. 나는 여기있는 많은 사람들이 내가하는 것보다 더 똑똑해서 어느 때보다도 빨리 너를 도울 수있다. 그래도 문제가 해결되면이 대답을 "수락 됨"으로 표시하면 좋겠어. 고맙겠습니다. 감사! –

관련 문제