2009-12-24 3 views
1

저는 TableAdapters를 처음 사용하기 때문에 어떤 일이 일어나는지 확신 할 수 없습니다. 기본적으로 생성 된 데이터 집합을 사용하여 다른 스키마를 사용하여 한 데이터베이스에서 다른 데이터베이스로 데이터를 내보내려고합니다. 코드를 단계별로 실행할 때 대상 데이터베이스의 행을 채우는 관점에서 모든 것이 잘 작동하는 것처럼 보입니다. 그러나 대상 데이터베이스에 행을 추가하려고하면 행이 삽입되지 않는 것 같습니다. 너희들은 어떤 생각을 가지고 있니? 프로젝트에 추가 된 데이터베이스를 출력 디렉토리로 복사하지 않도록 설정 했으므로 웹에서 본 제안이 작동하지 않는 것 같습니다.TableAdapter를 사용하여 Access 2003 DB에 행 삽입

 OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\database.mdb;"); 

     SomeTableAdapter tableAdapter = new SomeTableAdapter(); 
     tableAdapter.Connection = oleDbConnection; 
     tableAdapter.Connection.Open(); 

     SomeDataSet.SomeDataTable dataTable = tableAdapter.GetData(); 
     SomeDataSet.SomeDataRow dataRow = null; 

     // Do some checks on the existing rows 

     // Creation of new row is necessary 
     if (dataRow == null) 
      dataRow = dataTable.NewSomeRow(); 

      // Populate row fields 

      dataTable.AddSomeRow(dataRow); 
      dataTable.AcceptChanges(); 
     } 
     else 
     { 
      // Update exiting row 
     } 

     tableAdapter.Update(dataTable); 
     tableAdapter.Connection.Close(); 

답변

2

당신은 AcceptChanges()를 호출하여 자신을 발로 쏘고 있습니다. 데이터 세트의 모든 수정 사항을 '완결 된'것으로 표시하므로 다음 업데이트에서는이를 무시합니다.

일반적으로 고급 시나리오를 제외하고는 AcceptChanges를 직접 호출해서는 안됩니다.

+0

팁 주셔서 감사합니다. 나는 정말로 그 문제를 일으키는 것이 무엇인지 알아 냈다. 나는 멍청한 감독을했고 필요한 분야를 채우는 것을 잊었다. 그래도 고마워. –

+0

잠깐, AcceptChanges를 사용하고 있습니다. 작동합니까? 그럴 경우 모든 일을 잘못 처리 했음에 틀림 없습니다 ... –

+0

AcceptChanges를 제거했고 효과가있었습니다. 하지만 예, 방금 옳았다는 것을 알았습니다. AcceptChanges를 사용하면 데이터를 쓸 수 없습니다. 실제로 코드에서 AcceptChanges를 사용하지 않으려 고 시도했지만 여전히 작동하지 않았습니다. 필요한 필드를 채우지 않아서였습니다. –