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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top