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
        Administrator

          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
            Administrator

              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
                Administrator

                  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
                    Administrator

                      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
                          Administrator

                            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.