![]() |
Datenbank: Oracle • Version: 8i • Zugriff über: ADO
ADO SQL String Längenbegrenzung ?
Hallo zusammen,
ich habe mir gerade per ADOQuery eine Selection aus der Oracledatenbank versucht. Leider kann ich unter SQL.Text nur 1040 zeichen unterbringen, mein SQL string scheint aber länger zu sein. Das sagt er wenn ich den String aus einer ini datei Lade wenn ich den String direkt im Quelltext verwende, dann sagt er mir, das es max 255 Elemente besitzen kann :( Wie kann ich eine sehr lange SQL Anweisung ausführen? MFG Cyberobob |
Re: ADO SQL String Längenbegrenzung ?
Versuch mal:
Delphi-Quellcode:
Die genaue Fehlermeldung der Exception wäre auch interessant.
ADOQuery1.SQL.LoadFromFile('C:\oraclequery.txt');
|
Re: ADO SQL String Längenbegrenzung ?
Über was gehst du bei ADO genau? Welchen OLE DB-Provider verwendest Du?
Doch hoffentlich nicht den von Microsoft - Der ist eine sehr beschränkte Machbarkeitsstudie. |
Re: ADO SQL String Längenbegrenzung ?
Moin cyberbob,
das mit den 255 Zeichen im Quelltext klingt so wie die Beschränkung von Stringliteralen. Man kann aber mehrere mit + zusammenfügen um über 255 Zeichen zu kommen. |
Re: ADO SQL String Längenbegrenzung ?
Hallo zusammen...
@Christian Seehase So habe ich es auch versucht, aber irgentwann gibt er da auch auf, und das ganze ist leider nicht sehr schön im Quelltext. @shmia Habe ich versucht, den String in eine Textdatei, und durch ADO.SQL.Loadfromfile('c:\test.txt') geladen. Es kommen aber dann nur "?" raus, sehr komisch, Delphi sagt mir dann, das ein ungültiges Zeichen im String ist. @Bernhard Geyer Habe den "Microdoof OLE DB Provicder for ODBC Drivers" genommen, werd nun mal "Oracle Provider fpr OLE DB" versuchen. Oder kannst du einen anderen empfehlen? thx Cyberbob |
Re: ADO SQL String Längenbegrenzung ?
Zitat:
Mein Vorschlag sollte die Fehlermöglichkeiten eingrenzen. Das klappt natürlich nicht, wenn du die Datei erst aus deiner Anwendung heraus schreibst. Du musst mit Sherlock-Holmes Logik arbeiten: 1.) Abfrage erstellen und mit Notepad in Textdatei speichern 2.) Textdatei mit Notepad öffnen und Inhalt kopieren 3.) Den Inhalt in ein Oracle Tool kopieren und dort die Abfrage ausprobieren. Bei Fehler zurück zu 1.) 4.) ADOQuery ausprobieren mit ADO.SQL.Loadfromfile() 5.) wenn kein Fehler, dann war das Lesen aus der INI-Datei die Fehlerursache bei Fehler liegt das Problem an den ADO Komponenten von Borland Manchmal hat man regelrecht Tomaten auf den Augen; deshalb solltest du allem was du tust beim Debuggen mit gesundem Misstrauen begegnen. Deshalb werden SQL-Abfragen nicht abgeschrieben sondern mit Copy&Paste kopiert. |
Re: ADO SQL String Längenbegrenzung ?
|
Re: ADO SQL String Längenbegrenzung ?
@shmia
Ich hatte das schon vorher genau so gemacht, bin zwar Anfänger aber nicht doof :) Aber trotzdem kommen nur Fragezeichen. @Bernhard Geyer Werd ich morgen mal versuchen, aber gilt dort nicht die selbe einschränkung ? |
Re: ADO SQL String Längenbegrenzung ?
Zitat:
|
Re: ADO SQL String Längenbegrenzung ?
Ich denke eher, das das zur verfügung stellen, das Problem ist. ich bekomme den Kompletten Text nicht in ADO.SQL.TEXT hinein. Ich denke das ausfürhen dürfte dann kein Problem mehr sein, wenn der String erstmal komplett drin ist! Kann euch leider den String nicht posten, dann wäre es einfacher!
|
Re: ADO SQL String Längenbegrenzung ?
Zitat:
|
Re: ADO SQL String Längenbegrenzung ?
Zitat:
Jeder Programmierer, sogar die Besten, hat manchmal Tomaten auf den Augen. Der Aufruf ADO.SQL.Loadfromfile('c:\test.txt') lädt garantiert den Inhalt der Datei in die Abfrage rein. Mit LoadFromFile kannst du Abfragen mit vielem MBs laden; das ist überhaupt kein Problem. Wenn du also meine 5 Punkte ausführst, dann ist garantiert, dass in ADO.SQL.Text die gewünschte Abfrage drinsteht. Es gibt nur noch einen Schwachpunkt: LoadFromFile benötigt den ANSI Zeichensatz; UNICODE wird nicht unterstützt. Du kannst auch schreiben: ADO.SQL.SaveToFile('c:\test2.txt') und die erzeugte Datei anschauen und mit der 1. Datei vergleichen. Wo kommen den die Fragezeichen; wie lässt du dir diese anzeigen? |
Re: ADO SQL String Längenbegrenzung ?
@shmia
muss ich morgen alles Probieren. Die Anzeige der ? Habe ich über Showmesssage gemacht! |
Re: ADO SQL String Längenbegrenzung ?
Guten Morgen zusammen,
habe nun das mit Savetofile ausprobiert. Folgendes kommt raus.... ------------------------------------ Komplette Abfrage :) Aber dannach kommt das und beim Anzeigen per Showmessage nur ? *º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð*º ð ------------------------------------- Wenn ich SQL dann ausfürhen lassen sagt er ungültiges Zeichen :( MFG Cyberbob |
Re: ADO SQL String Längenbegrenzung ?
Hallo,
mir scheint dein Problem hat nichts mit einem size limit zu tun. Wenn ein Kodierungsproblem vorliegt, dann solltest du diesen Aspekt erst einmal isoliert untersuchen. Kannst du eine einfache Query (SELECT FIRST 3 * FROM tbl) auf den von dir probierten Wegen verarbeiten? Wenn du dein Statement aus einer Datei lädst, dann kannst du mittels NotePad prüfen, wie die Datei kodiert wurde. Handelt es sich um UniCode, dann kannst du diese Datei beim Speichern umkodieren. Grüße vom marabu |
Re: ADO SQL String Längenbegrenzung ?
Ich denke ich habe den Fehler .... zu wenig arbeitsspeicher :(
Habe nun im Quelltexteditor von Delphi das ganze eingefügt, da kam der Fehler, das die Zeile zu lange ist, also mehrere Zeilen draus gemacht und nochmal eingefügt. Dann hat er den Kompletten String akzeptiert. Beim Anzeigen via Showmessage kommt auch der komplette String. Beim Ausführen, kommt dann die Meldung "Zu wenig arbeitspeicher" :( Das ganze habe ich nun mit Savetofile gespeichert...und dann per Loadfromfile wieder reingeladen. Nun kommt in der Showmessage die Komplette abfrage, aber mit hunderten ? dahinter. sehr sehr komisch. An der Datei habe ich nichts geändert. MFG Cyberbob |
Re: ADO SQL String Längenbegrenzung ?
Zitat:
Servername, Username, Passwort und ein Skript indem eine Testdb erzeugbar ist. Dann könnte ich das mit unseren Oracle 8 ausprobieren. An "zu wenig Arbeitsspeicher" glaub ich im Rahmen einer SQL-Anweisung nicht. |
Re: ADO SQL String Längenbegrenzung ?
@Bernhard Geyer
Kann es Montag erst weitermachen, dann werd ich mal versuchen sowas zu schreiben. Die woche soll es auch mehr Speicher geben. Da Delphi 2005 512MB Vorraussetzt, und ich nur 256 drin habe, könnte es wahrscheinlich daran liegen! naja |
Re: ADO SQL String Längenbegrenzung ?
Zitat:
Zitat:
Startet es denn überhaupt oder gehst Du erst mal Kaffee-Drinken. Ich hoffe du bekommst dann gleich 1 GB. |
Re: ADO SQL String Längenbegrenzung ?
:shock: Eine Query mit mehr als 1000 Zeichen? Ab in eine View damit!
Wenn die Query dynamisch erstellt wird, tja... denn zumindest beim TADOConnect.Execute-Befehl gibt es eine Längenbegrenzung für den zu übergebenden Befehl. Der kann tatsächlich nur ca. 1000 Zeichen lang sein. Warum das so ist, weiss ich nicht. |
Re: ADO SQL String Längenbegrenzung ?
"Eine Query mit mehr als 1000 Zeichen? Ab in eine View damit!"
Wie erstelle ich einen View in Delphi , wäre meine frage nun :) @Bernhard Geyer sorry meinte 2006, und ja es startet, aber was soll ich machen, Firma ist eben nicht gerade spendabel! |
Re: ADO SQL String Längenbegrenzung ?
Zitat:
Ansonsten z.B. indem du ein passendes CREATE VIEW-Statement abschickst. Zitat:
Wenn Du jeden Tag Delphi nur einmal weniger Starten mußt aufgrund von Speichermangel ist 1 GB RAM locker drin wenn man die eingesparte Zeit gegenrechnet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz