Seite 1 von 1

Prepared Statements und reservierte Namen

Verfasst: 06.12.2015 18:42
von Andesdaf
Hallo, ich benutze Prepared Statements und SetDatabaseString() für den Zugriff auf eine Datenbank über ODBC.
Dummerweise habe ich ein Feld namens name, das scheinbar als Name reserviert ist und Probleme verursacht.

Leider funktionieren die als Alternativen aufgezeigten Schreibweise in Hochkommas und mit dem Tabellennamen vorangestellt nicht.
Ich bekomme jedes Mal den Fehler COUNT-Feld ungültig. Gibt es noch andere Möglichkeiten?

Ich habe keine Lust, den Feldnamen und seine zig Verwendungen zu ändern.

Re: Prepared Statements und reservierte Namen

Verfasst: 06.12.2015 19:13
von Kiffi
aus der Hüfte geschossen: Versuch mal, den Feldnamen mit eckigen Klammern zu schreiben.

Also '[Name]'. Vielleicht klappt es.

Grüße ... Peter

Re: Prepared Statements und reservierte Namen

Verfasst: 06.12.2015 20:36
von Andesdaf
Geht leider nicht.

Muss ich die Prepared Statements wohl wieder rausschmeißen.

Re: Prepared Statements und reservierte Namen

Verfasst: 07.12.2015 12:30
von mhs
Was ist es denn für eine Datenbank?

Bei MySQL probier mal "`", also `name`.

Re: Prepared Statements und reservierte Namen

Verfasst: 07.12.2015 22:54
von Andesdaf
Ich vergaß, es handelt sich um eine Access-Datenbank.

Seltsamerweise funktioniert diese Abfrage ohne Probleme:

Code: Alles auswählen

  zQuery = "SELECT veranstaltung.id FROM veranstaltung, ort, adresse"
  zQuery + " WHERE ort.id = veranstaltung.ort"
  zQuery + " AND adresse.id = ort.adresse"
  zQuery + " AND veranstaltung.name     = ?"
  zQuery + " AND adresse.ort            = ?"
  zQuery + " AND veranstaltung.datumvon = ?"
  zQuery + " AND veranstaltung.datumbis = ?"
(2x String, 2xLong)

Allerdings diese nicht:

Code: Alles auswählen

  zQuery = "SELECT adresse.id FROM adresse"
  zQuery + " WHERE adresse.name    = ?"
  zQuery + " AND adresse.land      = ?"
  zQuery + " AND adresse.ort       = ?"
  zQuery + " AND adresse.plz       = ?"
  zQuery + " AND adresse.strassenr = ?"
  zQuery + " AND adresse.tel1      = ?"
  zQuery + " AND adresse.fax       = ?"
  zQuery + " AND adresse.email     = ?"
(alles Strings)

Auch in der ersten, funktionierenden Abfrage, kommt name als Feldname vor, nur eben
als Teil einer anderen Tabelle. Warum funktioniert jetzt die erste, aber nicht die zweite Abfrage?