SQLCE - Upsert (Aktualisieren oder Einfügen) - Wie bereite ich eine Zeile mit der üblichen Methode vor?

8

Es folgt der Pseudocode:

%Vor%

Wenn ich oben 100 Spalten habe, muss es zweimal wiederholt werden; Was ich will, ist einige CommonMethodToFillRowData (); Aber welche Art von Parameter verwende ich für eine solche Methode?

%Vor%

Direkt aus MSDN doco auf SqlCeUpdatableRecord Klasse zitieren: - & gt; Stellt eine Zeile mit aktualisierbaren Werten aus der Datenquelle dar. Ein SqlCeResultSet-Objekt enthält ein oder mehrere UpdatableRecords.

Wenn das der Fall ist, warum kann ich keinen direkten Zugriff auf ein einzelnes UpdatableRecord innerhalb von SqlCeResultSet haben, sobald ich den Cursor über einen Seek ()?

positioniere

Wenn das möglich wäre, könnte ich Folgendes tun:

%Vor%     
joedotnot 16.02.2011, 12:12
quelle

4 Antworten

3

Erstellen Sie ein Wrapper-Objekt, das entweder SqlCeResultSet oder SqlCeUpdatableRecord entsprechend darstellen kann. Schreiben Sie dann Ihren "Speichern" -Code einmal und lassen Sie ihn entweder als Update oder als Einfügung anwenden, abhängig davon, ob der Datensatz bereits existiert.

Warnung: Dies ist Code nicht getestet.

%Vor%

Hinweis: Wenn Sie .NET 4 nicht verwenden, müssen Sie die optionalen Parameter entfernen. Sie können auch% SetX() Methoden zu SqlCeWrapper nach Ihren Bedürfnissen hinzufügen.

    
Greg 07.04.2011, 04:36
quelle
3

Wie wäre es mit:

%Vor%     
ErikEJ 04.04.2011 11:23
quelle
2

Wie wäre es mit dem Enumerator auf dem SqlCeResultSet anstelle der Read-Methode wie dieser

%Vor%     
WarrenG 07.04.2011 03:57
quelle
1

Ich bin mir nicht sicher, was Sie zu tun versuchen, und ich bin mir nicht sicher über diese Komponenten, daher gibt es wahrscheinlich einen effizienteren Ansatz. Aber laut MSDN ist SqlCeResultSet ein SqlCeDataReader , was ein DbDataReader , das IDataRecord ... und SqlCeUpdateableRecord implementiert auch IDataRecord .

Also, funktioniert das?

%Vor%

Es ist ekelhaft und die Leistung wird nicht gut sein, aber es könnte tun, was Sie suchen, wenn Sie nur die Zeile ausblenden möchten, die in einen Codeabschnitt gefüllt wird.

    
Calvin Fisher 06.04.2011 19:05
quelle

Tags und Links