Invalid Parameter bei Paradox DB Anfrage
-
Hallo C++ Freunde,
ich habe mir eine nette Funkion gebaut mit der ich eine Datenbank (Paradox7) auslesen lassen kann:
String LeseAusDatenbank(String DatenbankName, String DatenbankSpalte, String DatenbankTabelle, String SqlString, String DatenbankFeld) { TQuery *DBHilfsAnfrage = new TQuery(NULL); DBHilfsAnfrage->Close(); DBHilfsAnfrage->DatabaseName = DatenbankName; DBHilfsAnfrage->SQL->Clear(); DBHilfsAnfrage->SQL->Add("SELECT "+DatenbankSpalte+" "+DatenbankTabelle+" "+SqlString); DBHilfsAnfrage->Open(); String DBWert = DBHilfsAnfrage->FieldByName(DatenbankFeld)->AsString; // Anfrage wieder Freigeben DBHilfsAnfrage->Free(); return DBWert; }
Das klappt auch so weit ganz gut und verkürzt meinen Quelltext enorm wenn ich viele Anfragen an die Datenbank schicke.
Ich habe jetzt bloß das Problem das ich bei über 200 Datenbank Anfragen (in einer Schleife zb)
den Fehler "Invalid Parameter" bekomme. Ich habe schon so einiges Probiert und ich bin ziemlich Ratlos wie ich den Fehler loswerde ...
-
Hallo
Deine Funktion mag vielleicht deinen Quellcode verkürzen, ist aber sehr ineffizient. Insbesondere wenn du eine Schleife mehr als 200 mal durchlaufen läßt, lohnt es sich wirklich die TQuery-Instanz wiederzuverwenden.
Und am besten die notwendigen Parameter (das Feld und die Tabelle dürften dann wohl Fix sein) über die entsprechende Parameter-Eigenschaft von TQuery zu übergeben. Eventuell würde das den Fehler schon beheben.
Falls du die Schleife nur dazu benutzt um über eine Datensatzmenge der gleichen Tabelle und Spalte zu iterieren, dann solltest du sowieso alles in eine Abfrage packen und dann über die Ergebnise in TQuery iterieren.(Stell dir einfach vor du willst 200 Flaschen Bier aus dem Keller holen. Würdest du nun für jede einzeln die Kellertreppe runtergehen? Nein du würdest sicher ein oder zwei Kästen auf einmal mitnehmen)
bis bald
akari
-
Danke Akari, ich habe meinen Quelltext nochmal durchdacht und die Abfrage anders gestaltet. Das mit den Bierflaschen war ein guter Denkansatz