Autor Beitrag
thas11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Mo 21.03.11 15:24 
Hallo!

Ich habe Daten in einer Access Datenbank abgelegt und wenn ich neu Einträge habe möchte ich diese hinzufügen falls noch nicht in der DB vorhanden
Zuerst dachte ich mir ich fange einfach die Exception ab welche fliegt wenn dadurch eine Primärschlüsselverletzung entsteht...
Aber das war die denkbar schlechteste Idee, da die Exceptions enorm PErformance fressen..

Nun wollte ich fragen was die performanteste Methode ist um abzufragen ob schon eine Row mit diesem PRimärschlüssel vorhanden ist?

Danke & lg,
Wolfi
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 21.03.11 15:49 
Ein geschicktes SLQ-Statement sollte helfen.
Beispiel:
ausblenden SQL-Anweisung
1:
2:
3:
select count(*) Anzahl
from Tabelle
where Primärschlüsselfeld = DeinPrimärschlüssel

Anzahl ist dann entweder 1 oder 0. Ist es 1, dann existiert der schon.

Wenn du natürlich in kurzer Zeit große Mengen an Daten einpflegen willst, kann man auch anders vorgehen. Das hängt aber zum Beispiel auch von der Datenmenge ab, die in der Tabelle steht.

Man könnte zum Beispiel alle Primärschlüssel in eine Liste innerhalb des Programms einlesen und nur in dieser Liste prüfen, ob der Schlüssel schon existiert.

Was davon jetzt die performantere Lösung ist, kann man nicht ohne weiteres sagen. Möglicherweise ist beides nicht optimal. Das hängt von mehreren Faktoren ab.
SakeSushi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Windows 7
C# 4.0, Visual Studio 2010, Powershell 2.0
BeitragVerfasst: Mo 21.03.11 20:10 
Falls du mit dem Entity Farmework zu tun hast: Die ObjectContext Klasse stellt die Methode TryGetObjectByKey zur verfügung.