Startseite › Foren › Deutsches LiveCode-Forum › SQLite Datenbank erstellen und verknüpfen
- Dieses Thema hat 10 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren, 2 Monaten von Klaus Major.
-
AutorBeiträge
-
-
August 29, 2017 um 20:12 Uhr #1785
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 -
August 29, 2017 um 21:18 Uhr #1787
Hallo Wolli,
willkommen im Forum! 🙂
Kannst Du bitte mal das oder die fraglichen Skripte posten?
Da müssten wir schon mal reinschauen!Gruß
Klaus
-
August 30, 2017 um 14:31 Uhr #1793
Hallo Klaus,
vielen Dank für die schnelle Antwort. Hier die Scripts.
Verbindung zur Datenbank (keine Fehlermeldung):
on mouseUp
databaseConnect
end mouseUpAdd the databaseConnect handler to the card datenbank.
command databaseConnect
local tDatabasePath, tDatabaseIDput 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 mouseUpAgain 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 mouseUpand 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
-
August 30, 2017 um 14:48 Uhr #1795
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
-
September 7, 2017 um 16:03 Uhr #1904
Hallo Klaus,
vielen Dank für den Hinweis! Jetzt läuft alles.
Herzliche Grüße
-
September 7, 2017 um 16:52 Uhr #1908
Super! 🙂
-
September 15, 2017 um 17:06 Uhr #2090
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
-
September 15, 2017 um 17:11 Uhr #2092
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
-
September 15, 2017 um 17:25 Uhr #2094
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 mouseUpAdd the databaseConnect handler to the card datenbank2.
command databaseConnect
local tDatabasePath, tDatabaseIDput 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
-
September 15, 2017 um 17:27 Uhr #2096
Dieses Script würde dann im Stack liegen. Muss es auch noch in die Card eingetragen werden?
-
September 15, 2017 um 18:10 Uhr #2098
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.