Seite 1 von 1

Probleme bei Database

Verfasst: 07.04.2013 16:20
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?

Re: Probleme bei Database

Verfasst: 07.04.2013 17:23
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.

Re: Probleme bei Database

Verfasst: 07.04.2013 22:22
von DerMeister
Ah, danke für die Antwort!