C #: Atualização conjunto de dados sem qualquer chave primária
-
06-07-2019 - |
Pergunta
É possível em C # para usar um OleDbAdapter e usar seu método de atualização para um conjunto de dados quando uma tabela não tem uma chave primária e como posso fazer isso?
Solução
Aqui está um exemplo em VB, que pode lhe dar uma idéia geral.
Outras dicas
Você pode sempre encontrar uma linha usando myTable.Select("myColumn Like 'unique value'");
Você pode adicionar uma chave primária?
Sem algum tipo de identificação única (que deve ser o PK), então não há nenhuma maneira de saber o que linha para atualização.
Eu tenho o mesmo problema quando eu usei um banco de dados de terceiros. Eles não têm chaves primárias em seu banco de dados, mas eles têm uma combinação de campos que são únicas.
Em primeiro lugar, criar uma tabela de dados, e preenchê-lo com o resultado da consulta usando a única condição.
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
adapter.Fill(dt);
Em segundo lugar, substituir ds com seus dados atualizados pela coluna.
foreach (DataColumn col in datarow.Columns)
{
Debug.WriteLine(col.ColumnName);
ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
}
Em seguida, você pode atualizar.
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cb.GetUpdateCommand();
adapter.InsertCommand = cb.GetInsertCommand();
adapter.Update(ds);
Isso funciona para mim.
Apenas fazê-lo quando tiver certeza de que há uma em apenas uma consulta de dados. Se não, você pode querer adicionar um pouco de "se" a verificação