SqlDataReader.Read
-
Hey,
ich bin ganz neu, hoffe dass ich hier richtig bin und ihr mir helfen könnt. An sich ist es eigentlich auch ein sehr simples Problem mit dem ich mich rumschlage. Es handelt sich um folgendes:
Ich möchte ein kleines Programm schreiben, um KEYS zu verwalten. Die Keys sind in einer Datenbank gespeichert. Wenn ich dem Programm den die passenden Variablen übergebe (z.b install Produktname oder remove Produktname) soll das Programm die DB nach einem Key suchen, welcher frei ist und diesen dann auf dem Rechner zuweist. Soweit ist alles kein Problem und ich habe auchschon eine Programm in Java programmiert, welches genau das macht.
Bei dem Übersetzen in C# stehe ich aber vor dem Problem, dass ich mit den bereitgestellten Methoden nicht zurecht komme. So taucht beispielsweise in meinem Code eine SQL-Abfrage, die prüft, ob der Rechner, welcher das Programm ausführt überhaupt in der DB vorhanden ist. Die Abfrage schicke ich einfach per SQL command und prüfe mit dem SqlDataReader.Read (if(reader.Read())), ob ich ein Element zurückbekomme oder nicht. Dies klappt auch, jedoch nur einmalIch habe mich ein wenig informiert und herausgefunden, dass dieser Reader scheinbar die Kommunikation zwischen DB und Rechner verhindert, bis der Reader wieder geschlossen ist...
Hoffe, dass ich das Problem halbwegs nachvollziehbar dargestellt habe, trotzdem hier kurz und knapp meine Frage:
Wie kann ich möglichst einfach herausfinden, ob meine MYQSL Abfragen einen Treffer liefern oder nicht und anschließend weiterhin MYSQL-Befehle schicken kann?
-
hmm... bin mir nicht sicher, aber glaube ein while(reader.Read()) anstatt einem if sollte das sein was du suchst.
-
Ein Reader liest die Ergebnisse einer SQL Anfrage. Wenn Du nach einem neuen Key suchst musst du logischerweise eine neue Anfrage stellen.
Falls wir Dich falsch verstehen würde etwas Code helfen.
-
Ich gebe zu, dass es ohne Code wahrscheinlich schwer ist es nachzuvollziehen, doch hab ich erst morgen wieder Zugriff auf meinen Code.
While brauche ich nicht, da jede MYSQL Abfrage nur einen Treffer liefert (würde sie mehrere liefern wär mein Programm falsch...)
Die 2te Anwort ist aber eher das was ich suche. Wie kann ich dem Reader eine neue SQL-Abfrage übergeben? wenn die ich anderen wie die erste übergebe, ignoriert er diese einfach, einen neuen Reader kann ich ja erst erstellen, wenn ich den alten schließe und andere Mittel werden ja ebenfalls durch den Reader blockiert...
Es muss doch einen schöneren Weg geben, als den Reader nach jeder Abfrage zu schließen und neu zu öffnen...
-
-Maxl- schrieb:
Es muss doch einen schöneren Weg geben, als den Reader nach jeder Abfrage zu schließen und neu zu öffnen...
Was ist daran unschoen? Wenn du dir mal die Dokumentation zum SqlDataReader durchliest wirst du gleich in der Beschreibung lesen koennen das ein SqlDataReader ein Verfahren zum lesen eines Vorwaertsstreams bereitstellt.
Heisst: Einmal zuende gelesen ist somit Schicht im Schacht.
-
Gut danke
Gibt es noch andere Verfahren mit denen ich rumspielen kann, bzw die man kennen sollte, wenn man mit c# und MYSQL arbeitet?
-
Vielleicht schaust du dir mal LINQ-To-SQL an, damit kann man auch ganz angenehm arbeiten. Gerade habe ich mal nachgeschaut, ganz so einfach wie mit MSSQL lassen sich die Mapping-Klassen mit MySQL nicht erstellen aber trotzdem noch einfach genug um damit arbeiten zu koennen.
http://www.primaryobjects.com/CMS/Article100.aspx
Vielleicht ist das ja eine Alternative fuer dich.
-
Vielen Vielen Dank, das Programm läuft jetzt einwandfrei. Ich musste zwar noch kurz rumspielen, doch im nachhinein war mir alles klar und ich hab viel dazugelernt