SQLite & LO (Windows)

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

SQLite & LO (Windows)

Beitrag von Stephan »

Hallo,

ich experimentiere gerade etwas mit SQLite und LO unter Windows.

Auf der Homepage von SQLIte gibt es für (32Bit) Windows zwei relevante Downloads, die DLL:
https://sqlite.org/2021/sqlite-dll-win3 ... 350500.zip

und die 'Tools':
https://sqlite.org/2021/sqlite-tools-wi ... 350500.zip

Wenn ich bei zips nur (in einen NIcht-Systemordner) entpacke, kann ich vom zweiten zip sqlite3.exe starten und damit eine (leere) Datenbank anlegen.

sqlite3.exe weiß aber von der Existenz der DLL nichts (weil nicht im selben Ordner und auch nicht in Windows\System32), wofür ist die DLL dann überhaupt da?


Gruß
Stephan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: SQLite & LO (Windows)

Beitrag von Toxitom »

Hey Stephan,

ne klare Antwort kann ich Dir nicht geben - aber wahrscheinlich bist Du auf dem falschen Pfad;)

die dll wird m.A. für Programmierungen gebraucht und ist quasi die engine zum Erzeugen etc der sqlite DB.

Die Tools sind dagegen Verwaltungswerkzeuge zum erstellen, verwalten und bearbeiten von sqlite-DB Dateien.

Frage: Was willst Du denn erreichen?

Eine SQLite DB ist eine Datei - da ist dann alles drin;) Hat häufig die Endung *.db.

Die kannst Du doch direkt in LO oder wahrscheinlich auch AOO ansprechen über base.

Suchst Du ein Tool zum Erzeugen der DB-Datei oder zum Bearbeiten, so empfehle ich Dir den DB Browser für SQLite ( https://sqlitebrowser.org/, ist einfacher als die "Tools" auf Kommandozeile.

Und ich denke, Du willst keinen eigenen Code schreiben, um DB zu erzeugen, oder?

VG
Tom

PS: Vergass allerdings, dass Du SQLite nicht direkt in Base einbinden kannst. Du brauchst einen entsprechnden Treiber! Ich nutze ODBC und dafür den Treiber SQLite ODBC Driver , zu finden auf der Seite http://www.ch-werner.de/sqliteodbc/
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SQLite & LO (Windows)

Beitrag von Stephan »

die dll wird m.A. für Programmierungen gebraucht und ist quasi die engine zum Erzeugen etc der sqlite DB.

Die Tools sind dagegen Verwaltungswerkzeuge zum erstellen, verwalten und bearbeiten von sqlite-DB Dateien.
Ja, so dachte ich mir das auch, aber es ist problemlos möglich mit den Tools (konkret gesagt mit sqlite3.exe) eine Datenbank zu erstellen ohne das sqlite3.exe von der DLL weiß, weil nicht im selben Ordner und auch nicht im Systemverzeichnis.
Die einzige Erklärung die ich dafür habe ist das die Funktionalität der DLL auch direkt in sqlite3.exe einkompiliert ist
Frage: Was willst Du denn erreichen?
Naja, wir hatten ja am Telefon darüber gesprochen das ich vielleicht SQLite statt MySQL in einem Projekt einsetzen würde und deshalb teste ich SQLite derzeitig, und das Verhalten das das anscheinend ohne die DLL funktioniert irritiert mich und ich hätte da doch gerne Klarheit bevor ich das produktiv einsetze ... denn ich möchte vermeiden das Daten durcheinandergeraten und "unwillentlich einen missverständlichen Eindruck erweck[en]" [1] ...scnr :lol:

[1]
https://m.tagesspiegel.de/politik/das-w ... 67988.html
Und ich denke, Du willst keinen eigenen Code schreiben, um DB zu erzeugen, oder?
Richtig, das will ich nicht. Ich werde die SQLite Datenbank per Hand erstellen (hatte auch bereits https://sqlitebrowser.org/ gefunden) dann als ODBC anmelden und dann per LO-Datenbank (odb) darauf zugreifen und diese odb in LO als Datenquelle anmelden und darauf dann mit Basic programmiermäßig zugreifen.
PS: Vergass allerdings, dass Du SQLite nicht direkt in Base einbinden kannst. Du brauchst einen entsprechnden Treiber! Ich nutze ODBC und dafür den Treiber SQLite ODBC Driver , zu finden auf der Seite http://www.ch-werner.de/sqliteodbc/
Ja, habe ich schon in Benutzung.



Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: SQLite & LO (Windows)

Beitrag von Hiker »

Hallo Stephan,

Du brauchst die DLL tatsächlich nicht. Sqlite ist klein genug um direkt statisch gelinkt im Treiber "versteckt" zu werden (ähnlich wie beim Umgang mit dBase oder csv-Files innerhalb von Base).

Du findest bei ch-werner aber auch eine als experimentell gekennzeichnete Version des Treibers, die auf eine sqlite-DLL zugreift.
Bei statisch gelinkt kann natürlich kaum etwas schief gehen, aber ich habe damit mindestens 5 mal Sqlite auf meinem System (odbc-Treiber, Python in LO und extern, Sqlite-Shell, Thunderbird, SQliteStudio...)
Ein Update für eine einzige DLL klingt dagegen vergleichsweise sinnvoll, wenn man an regelmäßige Updates denkt.

Die sqlite3-Shell/Kommandozeile nutze ich hauptsächlich für Skripte, bzw zum Datenimport.
Für Änderungen an der Struktur der Datenbank nutze ich eher SQliteStudio https://sqlitestudio.pl/ (als portables Tool), alles andere lauft dann in Base, wobei ich python als Zugriffsmöglichkeit ebenfalls im Hinterkopf habe.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SQLite & LO (Windows)

Beitrag von Stephan »

Hallo Jörn,
Du brauchst die DLL tatsächlich nicht. Sqlite ist klein genug um direkt statisch gelinkt im Treiber "versteckt" zu werden (ähnlich wie beim Umgang mit dBase oder csv-Files innerhalb von Base).
Dein Verweis auf dBase bringt mich jetzt ins Nachdenken, denn mit dBase arbeite ich bei OO, wegen der mitgelieferten Literaturdatenbank, ja völlig selbstverständlich, aber wohl bisher auch ohne Nachzudenken.

Darf ich zu SQLite fragen:

Was nennst Du hier "Treiber"? Den ODBC-Treiber für SQLite?


Was ich jetzt selbst beim Rumprobieren feststelle ist:
Wenn ich SQliteStudio installiere, dann gibt es in dessen Programmordner auch eine sqlite3.dll und sqlite.dll und sofern ich diese lösche weigert sich SQliteStudio zu starten.
SQliteStudio startet aber wenn ich diese Dateien nach /Windows/System32/ kopiere oder auch wenn ich die quasi Original sqlite3.dll von https://www.sqlite.org/download.html an einen der beiden Orte kopiere.

Das hiesse dann das SQliteStudio die komplette SQLite-Datenbank-Engine mitbringt - interpretiere ich das richtig?

Wenn ja ist meine ganz ursprüngliche Frage damit beantwortet, allein bin ich etwas verwundet weil die Situation dann ja ist:
Wenn ich SQLite installieren will muss ich mir nur ein Tool zum Bearbeiten von SQLite-Datenbanken installieren und ich bekomme dann die eigentliche DAtenbank-Engine quasi nebenbei auch gleich installiert.


Wie auch immer ... darf ich noch Deine Meinung erfahren:

Kann ich SQLite ohne Bedenken einsetzen?


Die Frage klingt vielleicht dumm, aber mein Herangehen bei neu anzulegenden Datenbanken in/für OO/LO war bisher immer:
wenn die DB klein werden wird genügt die interne HSQLDB (auch wenn deren Ruf möglicherweise nicht der Beste ist) und wenn hingegen die Datenbank groß werden wird, ist MySQL über jeden Zweifel erhaben.

SQLite schiene mir inzwischen als hervorragende Alternative, weil sie mir das Server-Installations-'Geraffel' von MySQL sparen würde, aber ich muss halt sicher sein können das SQLite zuverlässig ist.
das Ranking (was ja kein direktes Maß für Zuverlasigkeit ist) von MySQL vs. HSQLDB vs. SQLite ist ja völlig unterschiedlich:
https://db-engines.com/de/system/HyperS ... L%3BSQLite



Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: SQLite & LO (Windows)

Beitrag von Hiker »

Hallo Stephan,

ich meinte tatsächlich den odbc-Datenbanktreiber.
Es reicht ja die Treibersoftware von ch-werner zu installieren und damit kann ich Verbindungen zu jeder sqlite-Datei auf meinem Rechner von Base aus aufbauen.
(Nebenbei: Base läuft damit wohl auch ohne Java, erst fur die Report-Engine wird es wieder gebraucht.... War aber nie wirklich wichtig für mich)

DLL oder statisch gelinkt kann jeder Programmierer eigentlich selbst entscheiden (oder es wurde vom Entwickler der Programmierumgebung vordefiniert) und für DLLs gibt es halt einen Suchpfad, was zum Sicherheitsproblem DLL-Injection gehört.

Und jedes Programm bringt unter Windows die komplette Datenbank-Engine für sqlite mit. (Unter linux gibt es dagegen meist ein sqlite-Paket, dass der Paketmanager nur einmal installiert, so wie LibreOffice auch das vorinstallierte python3 einer Distribution nutzen kann)

Ich halte sqlite für extrem zuverlassig, wie eigentlich auch die HSQLDB. Das Problem bei letzterer ist der embedded Betrieb, der anscheinend dazu führen kann, dass Daten bei einem Absturz noch nicht gespeichert sind, ähnlich wie bei einer Textverarbeitung, wo mann z.B den letzten Absatz verliert.
Als Lösung wird der Betrieb als SplitDB empfohlen, was auch funktioniert, abr damit sind meine Daten "anderswo" und daher nehme ich sqlite als Grundlage der SplitDB und "lagere" die Daten zu xyz.odb im selben Verzeichnis als xyz.sqlite3
Meist erzeuge ich mir noch ein Minimal-Batch xyz.bat mit dem ich das Kommandozeilen-Tool aufrufen kann (sqlite3 xyz.sqlite3), was nett ist wenn man mal eben ein paar sql-Befehle absetzen will, oder Daten von/zu csv importieren/exportieren will.

Als Besonderheit bei sqlite sollte man sich faq#3 ansehen [url]https://sqlite.org/faq.html#q3/[url] das ist nicht im Sinne der reinen Lehre, stört mich aber nicht.
Gerade bei Datenübernahme aus Calc sollte man das aber wissen.

Hauptunterschied zu MySQL ist aus meiner Sicht die fehlende Benutzerverwaltung, womit sqlite aber gut in ein Office-Paket passt, da mehrere Anwender gleichzeitig auch für Calc und Writer eher nicht vorgesehen sind (waren). MySQL ist also eher für Projekte bei der eine Datenbank für alle auf dem Server laufen soll, SQlite nehme ich für die lokale Einzelplatzlösung und muss dann eben auch kein gesondertes Backup nach Shutdown der Datenbank vorsehen.

Da sqlite in Python und Android verwendet wird und auch noch aktiv entwickelt wird, sehe ich da keine Sicherheitsprobleme. Die Einschränkungen bei ALTER TABLE umgehe ich mit SQliteStudio und irgendwelche speziellen JOIN-Varianten gibt es wohl auch nicht...

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SQLite & LO (Windows)

Beitrag von Stephan »

Hauptunterschied zu MySQL ist aus meiner Sicht die fehlende Benutzerverwaltung, womit sqlite aber gut in ein Office-Paket passt, da mehrere Anwender gleichzeitig auch für Calc und Writer eher nicht vorgesehen sind (waren). MySQL ist also eher für Projekte bei der eine Datenbank für alle auf dem Server laufen soll, SQlite nehme ich für die lokale Einzelplatzlösung und muss dann eben auch kein gesondertes Backup nach Shutdown der Datenbank vorsehen.
Beider Dinge bin ich mir bewusst. Es wird derzeitig nur eine Einzelplatzlösung benötigt und auch läuft die bisherige Lösung ohne Benutzerverwaltung.

Darf ich abschliessend ganz allgemein fragen: Du siehst doch sicher auch keine Probleme dabei nötigenfalls später von SQLite zu MySQL zu konvertieren?
Ich finde im Internet sogar spezialisierte Angebote dafür (z.B. https://www.fullconvert.com/de/howto/sqlite-to-mysql) und frage mich aber selbst was denn überhaupt an Problemen auftreten kann - notfalls kriege ich die Daten per csv doch immer von einer in die andere DB.



Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: SQLite & LO (Windows)

Beitrag von Hiker »

Hallo Stephan,

bei der Datensicherheit sehe ich keine Probleme. Via csv oder SQL-DUMP kannst Du die immer migrieren. Nur den Plattencrash kann man nur via Backup absichern...

Über Datumsformate und BLOB muss man aber ggfs nachdenken.

Wenn man aber z.B. eine komplexe Base-Oberfläche mit diversen Formularen etc. an eine andere Datenbank-Engine anflanschen will, kann es sein, dass es unterschiedliche Vehaltensweisen gibt (IFNULL, COALESCE) oder einzelne Features in Sqlite fehlen (FULL OUTER JOIN). Aber sqlite->MariaDB ist sicher einfacher als umgekehrt.

Auch bei TRIGGER oder stored procedures
würde ich immer mit Problemen rechnen.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Antworten