C#에서는 OleDbAdapter를 사용하고 테이블에 기본 키가 없는데 어떻게 데이터를 업데이트 할 수 있습니까?C# : 기본 키가없는 데이터 집합 업데이트
2
A
답변
1
Here's an example VB에서 일반적인 생각을 줄 수 있습니다.
0
기본 키를 추가 할 수 있습니까?
어떤 종류의 고유 ID (PK가되어야 함)가 없으면 업데이트 할 행을 알 수있는 방법이 없습니다.
1
당신은 항상 내가 타사 데이터베이스를 사용하는 경우
0
myTable.Select("myColumn Like 'unique value'");
내가 같은 문제를 가지고 사용하여 행을 찾을 수 있습니다. 데이터베이스에는 기본 키가 없지만 고유 한 필드의 조합이 있습니다.
먼저 데이터 테이블을 만들고 고유 조건을 사용하여 쿼리 결과를 채 웁니다.
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
adapter.Fill(dt);
둘째, ds를 업데이트 된 데이터로 바꾸십시오.
foreach (DataColumn col in datarow.Columns)
{
Debug.WriteLine(col.ColumnName);
ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
}
그런 다음 업데이트 할 수 있습니다.
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cb.GetUpdateCommand();
adapter.InsertCommand = cb.GetInsertCommand();
adapter.Update(ds);
이것은 저에게 효과적입니다.
오직 하나의 쿼리 데이터에 하나만 있다고 확신 할 때만하십시오. 그렇지 않은 경우 "if"체크를 추가 할 수 있습니다.