Frage

Ist es möglich, in C # eine OleDbAdapter zu verwenden und seine Update-Methode für einen Dataset verwenden, wenn eine Tabelle keinen Primärschlüssel hat und wie kann ich das tun?

War es hilfreich?

Lösung

Hier ist ein Beispiel in VB, die Sie vielleicht geben Sie eine allgemeine Idee.

Andere Tipps

Sie können immer eine Zeile mit myTable.Select("myColumn Like 'unique value'"); finden

Können Sie einen Primärschlüssel hinzufügen?

Ohne irgendeine Art von einzigartiger ID (die der PK sein soll), dann gibt es keine Möglichkeit zu wissen, welche Zeile zu aktualisieren.

Ich habe das gleiche Problem, wenn ich eine Drittanbieter-Datenbank verwendet wird. Sie haben keine Primärschlüssel in ihrer Datenbank, aber sie haben eine Kombination von Feldern, die einzigartig sind.

Erstellen Sie zunächst eine Datentabelle, und füllen Sie ihn mit dem Ergebnis der Abfrage die eindeutige Bedingung verwendet wird.

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

Zweitens ersetzen ds mit aktualisierten Daten durch Spalte.

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

Dann können Sie aktualisieren.

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

Das funktioniert für mich.

Nur es tun, wenn Sie sicher sind, ist es ein nur an einer Abfragedaten. Wenn nicht, sollten Sie einige „if“ Überprüfung

hinzufügen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top