AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBX meldet Syntaxfehler wo keine sind
Thema durchsuchen
Ansicht
Themen-Optionen

DBX meldet Syntaxfehler wo keine sind

Ein Thema von Der schöne Günther · begonnen am 24. Jun 2013 · letzter Beitrag vom 24. Jun 2013
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 14:23
Datenbank: SQLite • Version: ? • Zugriff über: lokal
Hallo.

Ich kenne mich mit Datenbanken in der Praxis nur sehr rudimentär aus. Ich weiß noch nicht einmal, ob ich die Felder "ergänzende Angaben" richtig asugefüllt habe. Mein Problem ist folgendes: Ich möchte mit Delphi einfach nur aus einer SQLite-DB mittels SELECT eine Ergebnismenge bekommen. Bislang ging das gut. Eine etwas komplexere Abfrage (Vereinigung zweier Abfragen mit Unterabfrage) scheitert nun - Angeblich sogar Syntaxfehler.

Normalerweise sucht man die Schuld bei sich selbst, nur bekommen andere Tools die exakt gleiche Abfrage auf der exakt gleichen Datenbank es ohne Probleme hin (SQLite Expert Personal oder SQLite Database Browser 2.0)!

Habe ich in Delphi irgendeine Einstellung vergessen?

Die Verbindung vom Typ TSQLConnection lege ich folgendermaßen an:
Delphi-Quellcode:
   sqlConnection := TSQLConnection.Create(nil);
   sqlConnection.Connected := False;
   sqlConnection.DriverName := 'Sqlite';

   sqlConnection.Params.Values['Database'] := startupFile;
   sqlConnection.Params.Values['FailIfMissing'] := 'True';
, abholen tue ich mir die Werte über
Delphi-Quellcode:
   query := '[...]';

   sqlConnection.Execute(
      query,
      nil,
      result
   );

   result.First();
   while not result.Eof do begin
      [...]
      result.Next();
   end;
Mache ich hier schon etwas falsch? Irgendeine "Aktiviere dies, wenn es etwas komplexer wird"-Einstellung vergessen? Ich habe auch die sqlite.dll gegen die sqlite.dll des "SQLite Expert Personal"-Tools ausgetauscht, das hat auch nichts gebracht.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 14:32
Evtl. liegt es daran, dass TSQLConnection nur unidirektional zugreifen kann, dein select aber mehr bräuchte.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 14:39
Ich nix verstehen

Meine Abfrage vereint zwei SELECT-statements mittels UNION, erstere hat eine Unterabfrage die sich auf die Ergebnismenge der äußeren bezieht. Das ist neu, ganz einfache SELECT-Abfragen gingen bislang. Gut möglich, dass der Typ TSQLConnection nicht mehr reicht und jetzt etwas neues her muss. Nur was?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 14:46
Leider bietet Delphi von sich aus nur diesen unbrauchbaren unidirektionalen (kann nur in eine Richtung lesen) Zugriff an. Wenn der select korrekt ist und andere selects funktionieren, liegt es sicherlich daran. Vernünftigen Datenbankzugriff bekommst du nur über Drittanbieter, ich hatte zuerst ZEOS danach hatte ich mich für UniDAC entschieden.

Soviel ich weiß können XE4-Version-Besitzer auf die kostenlose FireDAC zugreifen, welche man sich glaube zuvor runterladen muss.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 14:47
Probier es doch mit FireDAC.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 15:07
Ich wollte eigentlich nichts weiter als eine lokale Konfiguration aus einem paar KB großen SQLite-File einlesen.

Muss ich mir jetzt wieder irgendwelche Enterprise-Lösungen herunterladen und installieren nur um ein halbes Dutzend Zeilen aus einer SQLite-DB zu lesen?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 15:12
Du kannst auch versuchen den select "einfacher" zu formulieren, daraus mehrere selects zu machen und die "Union"-Syntax programmtechnisch lösen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 15:33
Bei einfachen Treibern oder Backend Engines hilft oft:
- Alias für Tables und Columns prüfen und konsistent einsetzen
(ich meine mich dunkel zu erinnern, dass es hier bei sqLite sogar ne besondere Besonderheit gab..)
- Bei Union mindestens im ersten SQL auf Spaltenalias bei "berechneten " Feldern achten
- ggF helfende, äußere Selects um die inneren, komplexen.

Spezialisierte Thirdparty Tools verhalten sich idR schlauer als stanard Komponenten. Ein fehlender oder kryptischer (weil aus der Feld-Oeration selbst gebildet~Spalte nennt sich dann wie die sie erzeugende Funktion) Feldalias kommt ggF. im Spezialtool harmlos rüber, ist aber nicht gut für DBX, ...

Tja und wichtig wäre ggF das Statement selbst hier zu posten.
Gruß, Jo
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 15:41
Spalten mit bösen Namen sind ein guter Hinweis.

Aber daran lag es nicht: Die Syntaxfehler habe ich in den Griff bekommen, er kam mit den Tab-Charakteren die noch im (formatierten) String gesteckt haben nicht zurecht. In der Exception wurden die nicht angezeigt. Das Problem liegt jetzt weiter eindeutig darin, dass er in der inneren Abfrage nichts von der äußeren weiß und hier mit Exception rausfliegt.

Mit FireDac habe ich jetzt ein paar Minuten probiert, bekomme es aber auf die Schnelle nicht hin. Eine Exe-Größe die dann auch auf 27MB anschwillt hat dabei auch einen gewissen Unterhaltungswert
Insgesamt ist mir meine Zeit für so etwas auch zu schade, ich fummele es mir dann lieber über Applikationslogik zurecht.

Für benutzerdefinierte SQLite-Geschichten die unter XE4 noch funktionieren gehe ich euch dann wohl ein anderes mal auf den Senkel. Danke bis hierhin.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: DBX meldet Syntaxfehler wo keine sind

  Alt 24. Jun 2013, 15:44
Schnellgooglen ergab, das sqlite scheinbar zwingend SpaltenAlias bei brechneten Spalten braucht, aber die Info ist ohne Gewehr, HandinsFeuer usw. irgendwas war da jedenfalls...
Du machst es ja eh anders.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz