Question

Est-il possible en C # d'utiliser un OleDbAdapter et d'utiliser sa méthode Update pour un ensemble de données lorsqu'une table n'a pas de clé primaire et comment puis-je faire cela?

Était-ce utile?

La solution

Voici un exemple en VB, qui peut vous donner une idée générale.

Autres conseils

Vous pouvez toujours trouver une ligne à l'aide de myTable.Select ("myColumn Like" valeur unique "");

Pouvez-vous ajouter une clé primaire?

Sans une sorte d'identifiant unique (qui devrait être le PK), il n'y a aucun moyen de savoir quelle ligne mettre à jour.

J'ai eu le même problème lorsque j'ai utilisé une base de données tierce. Ils n'ont pas de clé primaire dans leur base de données, mais ils ont une combinaison de champs uniques.

Créez d’abord un datatable et complétez-le avec le résultat de la requête en utilisant la condition unique.

DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
adapter.Fill(dt);

Deuxièmement, remplacez ds par vos données mises à jour par colonne.

foreach (DataColumn col in datarow.Columns)
{
    Debug.WriteLine(col.ColumnName);
    ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
}

Ensuite, vous pouvez mettre à jour.

OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.UpdateCommand = cb.GetUpdateCommand();
adapter.InsertCommand = cb.GetInsertCommand();
adapter.Update(ds);

Cela fonctionne pour moi.

Ne le faites que lorsque vous êtes sûr qu'il en existe une pour une seule donnée de requête. Si ce n'est pas le cas, vous voudrez peut-être ajouter des " if " vérification

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top