SQLite Datenbank erstellen und verknüpfen

Startseite Foren Deutsches LiveCode-Forum SQLite Datenbank erstellen und verknüpfen

Schlagwörter: , ,

Ansicht von 10 Antwort-Themen
  • Autor
    Beiträge
    • #1785
      Wolli
      Teilnehmer

      Hallo,
      ich habe eine Datenbank nach der Anleitung:
      LiveCode Lessons – How to create and use an SQLite database
      erstellt.
      Der Script DB-Verbindung läuft fehlerlos.
      Die Scripts Dateneingabe, Tabelle erzeugen und DB-Anzeige zeigen (bei Prüfdurchlauf) folgenden Fehler:
      put getDatabaseID() into tDatabaseID
      button „DbInhalt“: execution error at line 13 (Function: error in function handler) near „getDatabaseID“, char 5
      Es werden auch keine Daten angezeigt.
      Was mache ich falsch? Wer kann mir helfen?
      Danke

    • #1787
      Klaus Major
      Verwalter

      Hallo Wolli,

      willkommen im Forum! 🙂

      Kannst Du bitte mal das oder die fraglichen Skripte posten?
      Da müssten wir schon mal reinschauen!

      Gruß

      Klaus

    • #1793
      Wolli
      Teilnehmer

      Hallo Klaus,

      vielen Dank für die schnelle Antwort. Hier die Scripts.

      Verbindung zur Datenbank (keine Fehlermeldung):

      on mouseUp
      databaseConnect
      end mouseUp

      Add the databaseConnect handler to the card datenbank.
      command databaseConnect
      local tDatabasePath, tDatabaseID

      put specialFolderPath(„documents“) & „/runrevemails.sqlite“ into tDatabasePath

      put revOpenDatabase(„sqlite“, tDatabasePath, , , , ) into tDatabaseID

      setDatabaseID tDatabaseID

      end databaseConnect

      local sDatabaseID

      command setDatabaseID pDatabaseID

      put pDatabaseID into sDatabaseID

      end setDatabaseID

      function getDatabaseID

      return sDatabaseID

      end getDatabaseID

      Ab hier bei allen die gleiche Fehlermeldung: put getDatabaseID() into tDatabaseID

      Tabelle erstellen:

      on mouseUp
      databaseCreateTable
      end mouseUp

      Again the databaseCreateTable handler is on the card datenbank

      on databaseCreateTable

      put getDatabaseID() into tDatabaseID

      put „CREATE TABLE test (name, datum)“ into tSQL

      revExecuteSQL tDatabaseID, tSQL

      end databaseCreateTable

      Dateneingabe:

      on databaseInsertTest

      put getDatabaseID() into tDatabaseID

      put „INSERT into test VALUES (‚Klaus‘,’25.08.1976′);“ into tSQL

      put „INSERT into test VALUES (‚Otto‘,’25.12.1980′);“ into tSQL

      revExecuteSQL tDatabaseID, tSQL

      end databaseInsertTest

      Datenansicht:

      on mouseUp
      put databaseGetTest() into field „anzeige“
      end mouseUp

      and add the databaseGetTest function to the card datenanzeige

      function databaseGetTest

      put getDatabaseID() into tDatabaseID

      put „SELECT * from test“ into tSQL

      put revDataFromQuery(tab,return,tDatabaseID,tSQL) into tRecords

      return tRecords

      end databaseGetTest

      Herzliche Grüße

      Wolfgang

    • #1795
      Klaus Major
      Verwalter

      Hi Wolfgang,

      ich nehme mal an, Du meinst den Stack „Sqlite_Example.livecode“ von der LC Lessons Page?
      Den habe ich mal heruntergeladen und kann jeden button darin klicken ohne Error!
      Daran kann es eigentlich nicht liegen.

      Hm, in welchem Skript (Karte oder Stack) hast Du denn die Funktion „getDatabaseID()“ liegen?
      Die muss schon in der „Message hierarchie“ erreichbar sein.

      Gruß

      Klaus

    • #1904
      Wolli
      Teilnehmer

      Hallo Klaus,

      vielen Dank für den Hinweis! Jetzt läuft alles.

      Herzliche Grüße

    • #1908
      Klaus Major
      Verwalter

      Super! 🙂

    • #2090
      Wolli
      Teilnehmer

      Hallo,

      ich habe 2 Fragen:

      1. ich habe die Datenbank sqlite in LiveCode jetzt mehrfach per Script geändert und mittlerweile verschiedene Tabellen angelegt. Wie kann ich die Datenbank bereinigen? Wie heißt die Datenbank in Livecode genau?

      2. mit einem externen Datenbank-Builder (SQLiteAdmin) habe ich eine neue Datenbank erstellt. Wie bekomme ich diese jetzt in LiveCode?

      Mir ist bewußt, dass diese Fragen vermutlich nicht sehr „intelligent“ sind aber ich bin Anfänger mit LiveCode und SQL.

      Herzliche Grüße

      Wolli

    • #2092
      Klaus Major
      Verwalter

      Hi Wolli,

      1. das geht in LC nur über die entsprechenden SQL Befehle.
      Die Datenbank hat in dem Sinne keinen Namen, Du musst sie über den Dateinamen mit LC verbinden.

      Oder wie in 2. mit „SQLite Admin“ bearbeiten, geht sicher komfortabler als mit purem SQL 🙂

      2. Ganz einfach per „revopendatabase(…)“ und dann den korrekten Pfad eingeben.

      Gruß

      Klaus

    • #2094
      Wolli
      Teilnehmer

      Hallo Klaus,

      vielen Dank für die sehr schnelle Antwort. Kannst Du mir noch eine Hilfe zum Pfad geben?

      Ist hier der komplette Pfad auf meinem MAC gemeint?

      Beispiel: /Users/wolli/Documents/LiveCode-Projekte/Test/Datenbank-SQLite

      der Name wäre dann z.B. „nutzerdaten“ – gehört dieser auch zum Pfad?

      Wäre dieses Script in LiveCode dann richtig?

      on mouseUp
      databaseConnect
      end mouseUp

      Add the databaseConnect handler to the card datenbank2.
      command databaseConnect
      local tDatabasePath, tDatabaseID

      put specialFolderPath(„/Users/wolli/Documents/LiveCode-Projekte/Test/Datenbank-SQLite/nutzerdaten“) & „/runrevemails.sqlite“ into tDatabasePath

      put revOpenDatabase(„nutzerdaten“, tDatabasePath, , , , ) into tDatabaseID

      setDatabaseID tDatabaseID

      end databaseConnect

      local sDatabaseID

      command setDatabaseID pDatabaseID

      put pDatabaseID into sDatabaseID

      end setDatabaseID

      function getDatabaseID

      return sDatabaseID

      end getDatabaseID

      Werden dann sämtliche Daten der Datenbank (Tabelle und Daten) eingefügt?

      Herzliche Grüße

    • #2096
      Wolli
      Teilnehmer

      Dieses Script würde dann im Stack liegen. Muss es auch noch in die Card eingetragen werden?

    • #2098
      Klaus Major
      Verwalter

      Hallo Wolli,

      sorry, ging nicht schneller! 😀

      Ja, der Pfad zur DB Datei auf Deinem Mac ist hier gefragt.

      ...
      ## put specialFolderPath("/Users/wolli/Documents/LiveCode-Projekte/Test/Datenbank-SQLite/nutzerdaten") & "/runrevemails.sqlite" into tDatabasePath
      ## Nope! 
      ## Entweder specialfolderpath() & Unterordner oder wie hier der absolute Pfad:
      
      put "/Users/wolli/Documents/LiveCode-Projekte/Test/Datenbank-SQLite/nutzerdaten/runrevemails.sqlite" into tDatabasePath
      
      ## MIT specialfolderpath() sähe es so aus:
      ## put specialFolderPath("documents") & "/LiveCode-Projekte/Test/Datenbank-SQLite/nutzerdaten/runrevemails.sqlite" into tDatabasePath
      
      ## put revOpenDatabase("nutzerdaten", tDatabasePath, , , , ) into tDatabaseID
      ## Nope! Du musst angeben, welche ART Datenbank Du öffnen möchtest, wo diese Datei liegt, 
      ## steht ja in tDatabasePath! Leere Parameter kannst Du hier weglassen.
      put revOpenDatabase("sqlite", tDatabasePath) into tDatabaseID
      ...

      Bitte unbedingt „specialfolderpath()“ im dictionary nachlesen!

      Wenn das im Stackskript liegt, ist es prima, so kann von jeder Karte darauf zugegriffen werden.

      Gruß

      Klaus

Ansicht von 10 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.