Das ist so.
Umfrage: Beispiele mit Datenbanken
-
- Beiträge: 954
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umfrage: Beispiele mit Datenbanken
Wie bekomme ich die Treiber für SQLite, MS-SQL,... dann dort hinein, so das sie auch von Lazarus und den damit erzeugten Programmen gefunden werden ? Darauf hat sich mein "Probiert auch ?" bezogen. Weil, "Nur wissen" heisst, das man den Ort kennt, nicht aber unbedingt ob das funktioniert.
Mein aktueller Stand ist, die DLL für die jeweilige DB ins Verzeichnis des Programmes mitgeben, das funktioniert. Ich habe bisher nur nichts gefunden, wie man das für die verschiedenen Windows Version richtig macht, so das es out of the Box über die Systemverzeichnisse geht. Es ist eventuell mehr eine Windows Wissenslücke, die aber in Lazarus hineinreicht. Im Lazarusbuch und Lazarus Handbook wird sowas auch ausgespart und ansonsten habe ich noch nicht wirklich was zum Thema gefunden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Umfrage: Beispiele mit Datenbanken
ist es vermessen dabei weiter zu denken, denn diese Verbindung von (Server)DB, Zugriffs-DLL/SO(aka Treiber) und Lazarus ist schon eine ziemliche Hürde für einen Einsteiger.
Natürlich bleibt niemandem wirklich erspart sich irgendwann damit auseinander zu setzen, aber so ein "kleines" Installationstool (a la fpcupdeluxe) das einem Neuling oder hochoptimierten Oldie die gewünschte Umgebung zaubert um einfach loslegen zu können.
--aktuelle DLL/SO/Treiber downloaden und an die richtigen Stellen kopieren
--Bei Bedarf auch für die Lazarus GUI
--Datenmodul oder Zugriffsobjekt anpassen und bereitstellen.
ich weiß, manchmal hab ich schon Halluzinationen gggg
Natürlich bleibt niemandem wirklich erspart sich irgendwann damit auseinander zu setzen, aber so ein "kleines" Installationstool (a la fpcupdeluxe) das einem Neuling oder hochoptimierten Oldie die gewünschte Umgebung zaubert um einfach loslegen zu können.
--aktuelle DLL/SO/Treiber downloaden und an die richtigen Stellen kopieren
--Bei Bedarf auch für die Lazarus GUI
--Datenmodul oder Zugriffsobjekt anpassen und bereitstellen.
ich weiß, manchmal hab ich schon Halluzinationen gggg
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umfrage: Beispiele mit Datenbanken
Eben das für Lazarus und die Programme sollte 'Out of the box' sein, wenn die Pfade so klar sind, wie erklärt wird. Für den ersten Punkt ein Installationspaket, aber der Rest sollte dann gegessen sein. Aktuell habe ich noch nicht geschafft.charlytango hat geschrieben: Do 3. Nov 2022, 11:28 --aktuelle DLL/SO/Treiber downloaden und an die richtigen Stellen kopieren
--Bei Bedarf auch für die Lazarus GUI
--Datenmodul oder Zugriffsobjekt anpassen und bereitstellen.
ich weiß, manchmal hab ich schon Halluzinationen gggg
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Umfrage: Beispiele mit Datenbanken
Läuft bei mir mit den sqlite.dlls so auf 2 Rechnern.
Details zur Suchreihenfolge https://learn.microsoft.com/de-de/windo ... arch-order. Bissl weiter unten "Standardsuche für Desktopanwendungen".
mfg Ingo
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umfrage: Beispiele mit Datenbanken
Danke für den Link.shokwave hat geschrieben: Do 3. Nov 2022, 13:13Läuft bei mir mit den sqlite.dlls so auf 2 Rechnern.
Details zur Suchreihenfolge https://learn.microsoft.com/de-de/windo ... arch-order. Bissl weiter unten "Standardsuche für Desktopanwendungen".
Wie hast du die DLLs auf den Rechner gebracht, einfach in die Verzeichnisse kopiert oder mit einem Installationsprogramm ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Umfrage: Beispiele mit Datenbanken
Die hab ich einfach reinkopiert. Benötigt Adminrechte, aber mehr auch nicht.
mfg Ingo
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Umfrage: Beispiele mit Datenbanken
Kann mir bitte jemand mal das projekt in Linux testen?
SQLdb hat die Namen von default Libraries eingebaut und man kann das auch mit getConnectionList abfragen. Dann werden alle per uses inkludierten Zugriffsmöglichkeiten als verfügbar gelistet.
zB
SQLite3, Default library name: sqlite3.dll
einfach mal im Projekt den Button drücken.
Mein Ansatz wäre dass der Benutzer keine Standardlibrary angeben muss und die aus dieser Quelle stammt. Für Windows scheint das zu stimmen, aber wie ist das unter Linux?
werden da die .so Files angezeigt?
Hab aktuell kein Linux, kann das bitte jemand testen? THX
SQLdb hat die Namen von default Libraries eingebaut und man kann das auch mit getConnectionList abfragen. Dann werden alle per uses inkludierten Zugriffsmöglichkeiten als verfügbar gelistet.
zB
SQLite3, Default library name: sqlite3.dll
einfach mal im Projekt den Button drücken.
Mein Ansatz wäre dass der Benutzer keine Standardlibrary angeben muss und die aus dieser Quelle stammt. Für Windows scheint das zu stimmen, aber wie ist das unter Linux?
werden da die .so Files angezeigt?
Hab aktuell kein Linux, kann das bitte jemand testen? THX
- Dateianhänge
-
published.zip
- (138.42 KiB) 71-mal heruntergeladen
Re: Umfrage: Beispiele mit Datenbanken
Ja, das zeigt die .so Namen an.
Aber ich weiss nicht genau, was du damit auf Linux willst.
Auf Linux lädt man solche Standard Bibliotheken nicht von irgendwo herunter und legt die irgendwo hin, sondern man benutzt den Paketmanager.
Auf Ubuntu reicht z.B. die Zeile
Dabei muss man weder die Download URL kennen, noch den Installationspfad.
Die Lib ist dann einfach da und allfällige Abhängigkeiten auch.
Aber ich weiss nicht genau, was du damit auf Linux willst.
Auf Linux lädt man solche Standard Bibliotheken nicht von irgendwo herunter und legt die irgendwo hin, sondern man benutzt den Paketmanager.
Auf Ubuntu reicht z.B. die Zeile
Oder man nimmt ein GUI Tool, wie z.B. Yast auf OpenSUSE:sudo apt install sqlite3
Dabei muss man weder die Download URL kennen, noch den Installationspfad.
Die Lib ist dann einfach da und allfällige Abhängigkeiten auch.

-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Umfrage: Beispiele mit Datenbanken
was ich möchte ist mehrstufig.
ein Entwickler soll sich einen Connectortype auswählen.
z.B. "SQLite3"
Aufgrund dieser Entscheidung holt das Programm den Standardnamen für die Zugriffs-Bibliothek
und versucht sie in den üblich verdächtigen Verzeichnissen zu finden.
Dazu gibt es die Funktion:
und das soll idealerweise auch unter Linux klappen. Deswegen hab ich gefragt ob die .so Namen unter Linux zurückgegeben werden. Das hast du schonmal bestätigt.
Wo müsste ich unter Linux nach solchen Dateien suchen? Oder reicht einfach der filename und das OS macht den Rest?
ein Entwickler soll sich einen Connectortype auswählen.
z.B. "SQLite3"
Aufgrund dieser Entscheidung holt das Programm den Standardnamen für die Zugriffs-Bibliothek
Code: Alles auswählen
function Tsqldbruntime.GetStandardLibraryName(sConnector: string): string;
var
S : TStringList;
I : Integer;
begin
result:=cUNDEF;
S:=TStringList.Create;
try
getConnectionList(S);
For I:=0 to S.Count-1 do
if S[i] = sConnector then begin
result := GetConnectionDef(S[i]).DefaultLibraryName;
exit;
end;
finally
S.free;
end;
end;
Dazu gibt es die Funktion:
Code: Alles auswählen
function GuessLibraryLocation(sLibraryName:string):string;
var
s: string;
sSearched:string;
sPathString:string;
sLibName:string;
begin
result:=cUNDEF;
sSearched:='';
if sLibraryName='' then
sLibName:=cSQLdbLibraryName
else
sLibName:=sLibraryName;
{$ifdef Unix}
sPathString:='to define'
{$else}
sPathString := 'dll@sql';
{$endif}
result:=GuessFile(sLibName,sPathString,sSearched);
//Search in default directories
{$if Defined(WINDOWS)}
if result=cUNDEF then begin
if GetTargetCPUinfo = 'i386' then
result := GetWindowsSpecialDir(CSIDL_WINDOWS,false) + 'sysWOW64'+ DirectorySeparator + sLibName
else
result := GetWindowsSpecialDir(CSIDL_SYSTEM,false) + sLibName;
end;
sSearched:=sSearched+ LineEnding+result;
{$elseif Defined(Linux)}
//regrettably i use Windows only
{$elseif Defined(Darwin)}
{$endif}
if not FileExists(result) then result := cUNDEF;
if result=cUNDEF then
raise Exception.Create( LineEnding
+ 'File: ' + {$INCLUDE %FILE%} + LineEnding
+ 'Methodname: ' + {$I %CURRENTROUTINE%} + LineEnding
+ 'Linenumber: ' + {$INCLUDE %LINE%} + LineEnding +LineEnding
+ 'tried to find Library ' + cSQLdbLibraryName + ' in '
+ LineEnding + LineEnding
+ sSearched
+ 'but it was not found!' + LineEnding+ LineEnding
+ 'Please provide ' + cSQLdbLibraryName +' in one of the searchpaths');
end;
Wo müsste ich unter Linux nach solchen Dateien suchen? Oder reicht einfach der filename und das OS macht den Rest?
Re: Umfrage: Beispiele mit Datenbanken
Mir scheint, das Problem welches du zu lösen versuchst, ist sehr Windows-spezifisch.charlytango hat geschrieben: Sa 5. Nov 2022, 22:08 Wo müsste ich unter Linux nach solchen Dateien suchen? Oder reicht einfach der filename und das OS macht den Rest?
Wenn die Bibliothek normal installiert wurde, ist sie bei Linux unter "/usr/lib64/" o.ä.
Die Anwendung "findet" die von selbst, da braucht man nichts weiter machen.
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Umfrage: Beispiele mit Datenbanken
fein, danke.
kennt jemand eine Möglichkeit aus SQLDB heraus zu bekommen was eine filebasierte DB ist und was nicht.
Die müssten dann unterschiedlich behandelt werden und ggfs auch eine Datenbankdatei erzeugt werden.
Ist jetzt nicht highest railway denn für SQLite klappt das perfekt und das ist ja die Zielgruppe für meine Idee. Nur hat sich gezeigt dass man das alles schnell verallgemeinern kann.
kennt jemand eine Möglichkeit aus SQLDB heraus zu bekommen was eine filebasierte DB ist und was nicht.
Die müssten dann unterschiedlich behandelt werden und ggfs auch eine Datenbankdatei erzeugt werden.
Ist jetzt nicht highest railway denn für SQLite klappt das perfekt und das ist ja die Zielgruppe für meine Idee. Nur hat sich gezeigt dass man das alles schnell verallgemeinern kann.
Re: Umfrage: Beispiele mit Datenbanken
Alle SQLDB Verbindungen brauchen einen Server afaics, ausser SQLite. Firebird "depends".charlytango hat geschrieben: So 6. Nov 2022, 11:19 fein, danke.
kennt jemand eine Möglichkeit aus SQLDB heraus zu bekommen was eine filebasierte DB ist und was nicht.
Die müssten dann unterschiedlich behandelt werden und ggfs auch eine Datenbankdatei erzeugt werden.
ODBC ist wieder ein anderer Fall.
https://wiki.freepascal.org/Databases#S ... _databases
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Umfrage: Beispiele mit Datenbanken
SQLite ist keine Filebasierende DB im strengeren Sinn. Das wäre nur csv und dbf. SQLite ist ein Serverbasierendes DBSytem. Nur steht halt ein File vor deiner Nase. Ist aber strenggenommen auch beim MS-SQL und Firebird so. Nur halt nicht so offensichtlich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Umfrage: Beispiele mit Datenbanken
Dass das alles auf Files basiert ist mir durchaus klar -- schlecht ausgedrückt.af0815 hat geschrieben: So 6. Nov 2022, 12:03 SQLite ist keine Filebasierende DB im strengeren Sinn. Das wäre nur csv und dbf. SQLite ist ein Serverbasierendes DBSytem. Nur steht halt ein File vor deiner Nase. Ist aber strenggenommen auch beim MS-SQL und Firebird so. Nur halt nicht so offensichtlich.
Wollte wissen ob Firebird/Interbase auch so funktionieren wie SQLite und scheinbar ist es "it depends".
Auch ok, denn die Zielplattform soll ja SQLite3 sein, alles andere ist nice to have