Access oder MySQL
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Access oder MySQL
Das mit Zeos/FreeTDS würde ich gerne mal selbst testen. Woher kann ich die DLL bekommen?
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Access oder MySQL
Weiss ned was sagt denn die Suchmaschiene deiner Wahl ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Mit TCP/IP kenne ich mich bestens aus (mit SQL allerdings weniger). Ich war davon ausgegangen, dass man den standardisierten SQL-Byte-Strom, der in den genannten Dokumenten definiert ist, einfach über eine transparente TCP/IP Connection zwischen client und Server kommunizieren kann. Wenn das nicht so ist, braucht man am Client natürlich eine Hersteller-Spezifische Bibliothek, die mit dem User Programm SQL spricht und mit dem Datenbank-Server in proprietärer Weise. Fände ich aber eine ziemlich blöde Idee. (Außer, dass man da z.B. eine Kompression einbauen könnte.)gocher hat geschrieben:Nun noch was an Michael TCP/IP ist ein Protokoll zum Datentransfer, die Kommunikation funktioniert also Client-Server, was natürlich bei vielen Serverdatenbanken möglich ist, für den Zugriff auf die Daten wird also ein Client (Treiber) benötigt, der die Befehle und die Rückgabe zur Verfügung stellt.
"Client-Server" heißt ja nicht unbedingt, dass der Server auf einem anderen Rechner laufen muss. In Linux macht man sehr erfolgreich und performant TCP/IP Kommunikation zwischen Programmen auf derselben Hardware. Statt TCP/IP kann man natürlich zur Rechner-Internen Client-Server-Kommunikation mit Byte-Streams Pipes verwenden, was noch etwas performanter ist und für die beteiligten Programme außer beim öffnen keinen Unterschied macht ("In Linux ist alles eine Date") .
Ich hatte ja auch ausgeführt, dass ich nur von Client-Server-SQL-Datenbanken spreche. Ein SQL-Server-Programm, das auf demselben Rechner läuft, wie das User-Programm und einer JET-Datebank, deren Flat-File für den gemeinsamen Zugriff auf einem Fileserver liegt, ist aber absolut denkbar und würde das Kriterium "Cleint-Server" durchaus erfüllen. Wenn ich das richtig sehe, macht JET-via-ADO so etwas ähnliches (nur eben nicht über TCP/IP).
-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Das wäre ja vollkommen idiotisch. Ist das Zeos Team damit wirklich zufrieden ?gocher hat geschrieben:Zeos vereinheitlicht nun über die eigene Schnittstelle, das bedeutet wenn man nun von Windows nach Linux wechselt geht das auch, nur nicht unbedingt mit der selben Datenbank. Denn wenn man unter Windows einen MSSQL Server zur Verfügung hat, gibt es den unter Linux nicht.
Gibt es keine "allgemeine" DLL/so, die die von Zeos verlangte Programmier-Schnittstelle bietet und Richtung Datenbank nicht mehr als die standardisierte SQL-Kommunikkation via TCP/IP verwendet, und dabei natürlich keine Hersteller-Spezifischen Erweiterungen (siehe Wiki-Artikel über SQL) zur Verfügung stellt, was natürlich die vom User verwendbaren Möglichkeiten einschränkt, ihm aber jederzeit den Wechsel des Server-Herstellers ohne neu-kompilieren und installieren von irgendwelchen "Treibern" auf den Client-Rechnern ermöglicht.
Realisiert MSSQL den SQL-Standard gar nicht (würde mich nicht unbedingt wundern...

-Michael
Zuletzt geändert von mschnell am Mo 25. Mär 2013, 09:44, insgesamt 3-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Die Behauptung ist ursprünglich nicht hier aufgestellt werden, sondern ich habe (mit Quellen-Angabe) aus "Delphi-Praxis" zitiert.hde hat geschrieben:Solange hier behauptet wird Zeos greife überer ADO zu macht eine Diskussion keinen Sinn. Glaube nur selbst an deine Märchen.hde
Lügen die ?
-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Da ZEOS - soweit ich das inzwischen verstanden habe - für jeden unterstützte Datenbank-Typ eigenen Code beinhaltet, kann es ja teilweise über ADO gehen und teilweise über andere DLL/so- API - Schnittstellen. Es könnte theoretisch für irgendeinen (zukünftigen) Type auch SQL-Kommunikation selber über TCP/IP-Sockets oder Pipes realisieren, ohne eine externe Laufzeitbibliothek zu benötigen.MmVisual hat geschrieben:hde hat recht. Zeos nutzt direkt die Client DLL / SO. Und wo ist jetzt die ADO DLL dazwischen?
Das ist doch kein Widerspruch.
-Michael
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Ist schon schade, dass jeder nur das für wahr hält, was er schon kennt, und die Augen vor alternativen Möglichkeiten verschließt.Christian hat geschrieben:Irgendwo habt ihr alle recht aber doch auch keiner
Dabei ging es in der Ursprünglichen Frage doch um die Auswahl, d.h. zunächst um die Beleuchtung von Möglichkeiten ...

-Michael
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Access oder MySQL
Wie schon geschrieben, man kann durchaus auch unter Linux auf MSSQL Datenbanken zugreifen.
Und ja kein Datenbankhersteller hat interesse daran das man einfach auf eine andere Datenbank wechseln kann, genauso wie kein Office Hersteller interesse daran hat das sein Dateiformat von der Konkurenz fehlerfrei gelesen werden kann.
Schaltet soch bitte das Hirn mal ein.
Und ja kein Datenbankhersteller hat interesse daran das man einfach auf eine andere Datenbank wechseln kann, genauso wie kein Office Hersteller interesse daran hat das sein Dateiformat von der Konkurenz fehlerfrei gelesen werden kann.
Schaltet soch bitte das Hirn mal ein.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Access oder MySQL
In der ZEOS SVN gibt es eine Text Datei, wo drin steht welche DLL man braucht und wo man die laden kann. Leider klappt das dennoch nicht mit dem FreeTDS Treiber. Die DLL "dblib.dll" habe ich auch angegeben. Wenn ich mal Zeit habe, dann mache ich dafür einen separaten Thread auf. Es ist sicher nur eine andere Konfiguration nötig, die ich noch nicht herausgefunden habe. Denn der Zeos-Entwickler hatte mir schon vor längerer Zeit geschrieben, dass nun FreeTDS fertig implementiert ist. Ich wollte das nur mal mit meinem EleLa Programm testen (Seit ein paar Tagen unterstützt EleLa auch MsSQL und nicht nur MySQL/PostgreSQL/SQLite (über die Zeos Komponente)).
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Access oder MySQL
Hallo, ich habe extra unter dem Code folgendes geschrieben:MmVisual hat geschrieben:Jedenfalls finde ich dieses komische "cn := CreateOleObject('ADODB.Connection');" sehr unpraktisch. Wenn man nun ein cn. im Editor eintippt, dann erscheinen alle möglichen Dinge in der Auswahlliste, aber niemals die, die mit dem ADO Objekt zusammen passen. Also man muss alle Methoden vom OLE Objekt auswendig wissen. Und das soll eine tolle und einfache Programmierung seinNa dann viel Spaß mit ADO / OLE Objekten.
Ich wollte lediglich mit diesem Beispiel klarstellen, was alles geht, ich habe zuvor geschrieben das ich die ADO Type Libray als Grundlage für eine eigene Klasse nutze, da funktioniert auch die Code-Vervollständigung.gocher hat geschrieben:Für dieses Beispiel ist nicht einmal der Import der Type Library von ADO erforderlich, da ich für dieses Beispiel einfach mal auf OLE Objects aufgesetzt habe, mal so kurz zum Test, ist zwar nicht komfortabel aber geht auch!
Ich habe auch nicht behauptet das Zeos immer über ADO zugreift!
Ich habe sogar davon abgeraten ADO zu nutzen wenn man eventuell einen System-Wechsel einplanen muss!
Ich habe am Anfang sogar geschrieben das der Weg über ADO sehr steinig ist, weil man selbst was schreiben muss und nicht einfach eine fertige Komponente nutzen kann. Was muss ich sonst noch alles schreiben.
Aber wenn man erst einmal eine ADO Komponente geschrieben hat und sich unter Windows um nichts mehr kümmern muss ist es eine feine einfache Sache!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Access oder MySQL
Der Weg über ADO ist nicht steinig, Zeos kann das bereits 

W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Access oder MySQL
Mal ein Beispiel, zum besseren Verständnis, wie würde so ein kleines Progrämmchen unter Zeos aussehen?
Ich habe mich mal an das von mir schon mal vorgegebene Beispiel gehalten, wenn es unter Zeos genau so einfach ist steig ich vielleicht um.
Ich hab noch schnell die beiden Connectionstrings für MySQL und MSSQL hinzugefügt damit wäre ADO fertig.
Code: Alles auswählen
program ADOTest;
{$APPTYPE CONSOLE}
{$mode objfpc}{$H+}
uses Classes, SysUtils, ado;
function IIF(b: boolean; sTrue: string; sFalse: string = ''): string;
begin if b then result := sTrue else result := sFalse; end;
var
cn: TADOConnection;
rs: TADORecordset;
i: integer;
begin
//connect db
cn := TADOConnection.Create(nil);
cn.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\mydb\test.mdb');
// cn.Open('Provider=MSDASQL.1;Extended Properties="Driver={MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;Database=test;User=root;Option=3;"'; //MySQL
// cn.Open('Provider=SQLOLEDB.1;Password=mypass;User ID=root;Initial Catalog=test;Data Source=localhost;'); //MSSQL
//select
rs := TADORecordset.Create(cn);
rs.Open('SELECT * FROM tblTable');
//list fieldnames
for i:=0 to rs.Fields.count-1 do
Write(IIF(i>0, ';') + rs.Fields[i].name);
WriteLn();
//list values
while not rs.eof do
begin
for i:=0 to rs.Fields.count-1 do
Write(IIF(i>0, ';') + rs.Fields[i].AsString);
WriteLn();
rs.MoveNext;
end;
//close recordset
rs.Close;
rs.Free;
//close connection;
cn.Close;
cn.Free;
end.
Ich hab noch schnell die beiden Connectionstrings für MySQL und MSSQL hinzugefügt damit wäre ADO fertig.
Zuletzt geändert von gocher am Mo 25. Mär 2013, 23:47, insgesamt 1-mal geändert.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Das sollten sich die Anwender aber nicht gefallen lassen. Schließlich kann man inzwischen auch mit jedem Telefon ein Telefon eines anderen Herstellers anrufen.Christian hat geschrieben:Und ja kein Datenbankhersteller hat interesse daran das man einfach auf eine andere Datenbank wechseln kann....
Und des SQL-Standard gibt es schließlich genau zu diesem Zweck und er ist von diversen Organisationen abgesegnet.
-Michael
Re: Access oder MySQL
Sorry @mschnell, in welcher Welt leben Sie eigentlich?mschnell hat geschrieben:Das sollten sich die Anwender aber nicht gefallen lassen. Schließlich kann man inzwischen auch mit jedem Telefon ein Telefon eines anderen Herstellers anrufen.
Und des SQL-Standard gibt es schließlich genau zu diesem Zweck und er ist von diversen Organisationen abgesegnet.
Zigtausend Programmierer in aller Welt leben mit dem Wissen dass ein Umstieg von einer DB auf eine andere nun wirklich nicht sooo einfach ist, wie Sie sich das denken. Und hinter diesen ITlern steht die Markmacht vieler Weltkonzerne. Da können Sie ja mal Klage einreichen gegen Oracle, IBM und andere.
Bei SQL ist nur die Basis der Sprache genormt, aber jeder DB-Hersteller bemüht sich um sinnvolle individuelle Erweiterungen, die nun wirklich alles andere als kompatibel sind. Es gibt DBs, da ist nicht mal das Ergebnis einer where-Abfrage mit Jokern identisch zu anderen DBs.
Das mag traurig sein, ist aber so ..
Und deshalb gibt es Tools (wie Zeos, ODBC u.a.) die das etwas vereinfachen.
hde
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Access oder MySQL
Andere Kommunikations-Standards scheinen erfolgreicher zu sein als SQL (z.B. TCP/IP (Novels SPX/IPX und Microsofts "NetBIOS" sind ausgestorben), SMPT (Nove's "MHS" ist ausgestorben, ....)hde hat geschrieben:Das mag traurig sein, ist aber so ..
Und deshalb gibt es Tools (wie Zeos, ODBC u.a.) die das etwas vereinfachen.
Ist ja auch gut, dass es solche Tools wie ZEOS gibt, die die von den Weltkonzernen verpestete Welt ein wenig erträglicher machen.

Wie war das:
Man darf Gott nicht anhand dieser Welt beurteilen. Das war nur ein missglückter Versuch.
Aber was muss das für ein Meister sein, der sich solche Fehler leisten kann.

-Michael