Probleme bei Database

Für allgemeine Fragen zur Programmierung mit PureBasic.
DerMeister
Beiträge: 28
Registriert: 30.12.2009 19:20

Probleme bei Database

Beitrag von DerMeister »

Hallo an alle
Ich hab mal ausgehend vom Purebasic Beispielcode für Datenbanken ein bisschen herumgespielt, bin aber auf ein Problem gestoßen. Ich habe folgenden Code:

Code: Alles auswählen

UseSQLiteDatabase()

Procedure CheckDatabaseUpdate(Database, Query$)
  Result = DatabaseUpdate(Database, Query$)
  If Result = 0
    Debug DatabaseError()
  EndIf
  
  ProcedureReturn Result
EndProcedure

DatabaseFile$ = GetTemporaryDirectory()+"/Database.sqlite"

If CreateFile(0, DatabaseFile$)
  CloseFile(0)
  
  If OpenDatabase(0, DatabaseFile$, "", "")
    CheckDatabaseUpdate(0, "CREATE TABLE country (name CHAR(50) PRIMARY KEY)")
    CheckDatabaseUpdate(0, "CREATE TABLE is_neighbour (first CHAR(50), second CHAR(50), PRIMARY KEY (first, second), FOREIGN KEY (first) REFERENCES country(name), FOREIGN KEY (second) REFERENCES country(name))")
    
    
    
    CheckDatabaseUpdate(0, "INSERT INTO country (name) VALUES ('Germany')")
    CheckDatabaseUpdate(0, "INSERT INTO country (name) VALUES ('France')")
    CheckDatabaseUpdate(0, "INSERT INTO country (name) VALUES ('Spain')")
    
    CheckDatabaseUpdate(0, "INSERT INTO is_neighbour (first, second) VALUES ('Germany', 'France')")
    CheckDatabaseUpdate(0, "INSERT INTO is_neighbour (first, second) VALUES ('France', 'Spain')")
    
    
    If DatabaseQuery(0, "SELECT * FROM is_neighbour")
      While NextDatabaseRow(0)
        Debug GetDatabaseString(0, 0)
      Wend
      
      FinishDatabaseQuery(0)
    EndIf
    
    CloseDatabase(0)
  Else
    Debug "Can't open database !"
  EndIf
Else
  Debug "Can't create the database file !"
EndIf
Als Ausgabe bekommen ich nun:
Germany
France

also nur die jeweiligen Einträge der ersten Spalte.
Die gleiche Ausgabe bekomme ich bei der Anfrage "SELECT first FROM is_neighbour", und bei der Anfrage "SELECT second FROM is_neighbour" bekomme ich die Ausgabe
France
Spain

Wie bekomme ich das jetzt hin, dass ich alle Spalteneinträge ausgegeben bekomme, bzw. woran liegt es, dass ich bei der Anfrage "SELECT * FROM is_neighbour" nur die Einträge der "first" Spalte ausgegeben bekomme?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Probleme bei Database

Beitrag von NicTheQuick »

Wie wäre es damit?

Code: Alles auswählen

Debug GetDatabaseString(0, 0) + ", " + GetDatabaseString(0, 1)
Man beachte die 1, die die zweite Spalte anspricht.
DerMeister
Beiträge: 28
Registriert: 30.12.2009 19:20

Re: Probleme bei Database

Beitrag von DerMeister »

Ah, danke für die Antwort!
Antworten