Laden...

Problem bei einfachem auslesen aus Datenbank

Erstellt von Richter vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.946 Views
R
Richter Themenstarter:in
104 Beiträge seit 2006
vor 14 Jahren
Problem bei einfachem auslesen aus Datenbank

verwendetes Datenbanksystem: Compact Database 3.5 (oder so ähnlich^^)

Hallo!

Ich habe folgenden Code der die von VisualStudio 2008 erzeugten Klassen nutzt:


            holecardsTableAdapter holecardsTA = new holecardsTableAdapter();

            listView1.Items.Clear();
            System.Data.DataTableReader DTR=null;
            DTR = holecardsTA.GetAllHands(NamensListe.SelectedItem as string).CreateDataReader(); //ERROR
            while (DTR.Read())
            {
                listView1.Items.Add(DTR.GetString(1));
            }

An der markierten stelle kommt es zu folgendem Fehler:

Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.

Hinter GetAllHands verbirgt sich das folgende:


SELECT     holecards.holecards
FROM         holecards INNER JOIN
                      spieler ON holecards.id_spieler = spieler.id_spieler
WHERE     (spieler.name = @name)

Ich versteh den Fehler nicht. 😦 Ich wäre für Tipps sehr dankbar. An den zwei Tabellen ist meiner Meinung nach nichts besonderes 😦

Und wenn ich den sql-Code im Querybuilder ausführe funktioniert er !! Das verstehe ich am wenigsten 😦

Hoffe ihr versteht mich und könnt mir helfen. Danke!

Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!

691 Beiträge seit 2007
vor 14 Jahren

Hi

Also entweder

Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.

sind die Tabellen fehlerhaft,
oder

An den zwei Tabellen ist meiner Meinung nach nichts besonderes 😦

deine Datenbankstruktur hat sich geändert und du hast den TableAdapter nicht aktualisiert.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

1.564 Beiträge seit 2007
vor 14 Jahren

SELECT     holecards.holecards
FROM         holecards INNER JOIN
                      spieler ON holecards.id_spieler = spieler.id_spieler
WHERE     (spieler.name = @name)

Also ich brech' mir zwar immer einen damit ab deutsche Fehlermeldungen zu verstehen, aber so wie's aussieht wird ein Constraint (schätze mal dein Primary-Key) innerhalb deiner DataTable verletzt.

Deine Methode "GetAllHands" erzeugt eine Instanz einer typisierten DataTable, richtig? Wenn du die typisierte DataTable über den Designer erzeugt hast wird normalerweise ein Primary-Key auf deiner ID-Spalte erzeugt. Wenn deine Tabelle "holecards" eine 1:n Beziehung zu deiner Tabelle "spieler" hat werden dir mit deinem Statement doppelte Einträge für die Tabelle zurückgeliefert. Verwende ein DISTINCT, dann sollte es funktionieren:


SELECT DISTINCT
      holecards.holecards
   FROM holecards 
      INNER JOIN spieler ON holecards.id_spieler = spieler.id_spieler
   WHERE     (spieler.name = @name)

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

R
Richter Themenstarter:in
104 Beiträge seit 2006
vor 14 Jahren

Ich danke euch für eure Hilfe!

Ich habe wohl wirklich irgend etwas nicht aktualisiert, bzw etwas war asynchron. Ich hab jedenfalls alles neu gemach und nun gings....die arbeit wars wert^^

Nevu - Intelligente Maschinen, die Zukunft alles rund um das Thema Künstliche Intelligenz!