Prepared Statements und reservierte Namen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Prepared Statements und reservierte Namen

Beitrag 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.
Win11 x64 | PB 6.20
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Prepared Statements und reservierte Namen

Beitrag von Kiffi »

aus der Hüfte geschossen: Versuch mal, den Feldnamen mit eckigen Klammern zu schreiben.

Also '[Name]'. Vielleicht klappt es.

Grüße ... Peter
a²+b²=mc²
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Prepared Statements und reservierte Namen

Beitrag von Andesdaf »

Geht leider nicht.

Muss ich die Prepared Statements wohl wieder rausschmeißen.
Win11 x64 | PB 6.20
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Prepared Statements und reservierte Namen

Beitrag von mhs »

Was ist es denn für eine Datenbank?

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

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Prepared Statements und reservierte Namen

Beitrag 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?
Win11 x64 | PB 6.20
Antworten