![]() |
Datenbank: MySQL (Workbench) • Version: 5.1 • Zugriff über: MySQLConnection
Datenabfrage von Delphi via MySQL
Guten Morgen,
ich habe mit MySQL Workbench eine relationale Datenbank erstellt, Testdaten eingetragen und eine Verbindung in Delphi hergestellt - das klappt wunderbar. Nun möchte ich jedoch auch auf meine Testdaten zugreifen, ich weiß aber nicht wie. Als ich mit Paradox gearbeitet habe, habe ich dafür immer die DBGrid-Komponente benutzt, das wollte ich jetzt auch machen, wenn das möglich ist. Diese Komponente habe ich also auf meiner Form, dann die Verbindung zu MySQL (TSQLConnection), eine TDatenSource und eine TSQLQuery (Eigenschaften wie SQLConnection etc. sind eingestellt). Die DataSource-Eigenschaft von SQLQuery ist auf DataSource1 gestellt, jetzt kann ich jedoch die DataSet-Eigenschaft von DataSource nicht einstellen, sodass es einen Bruch gibt und keine Daten angezeigt werden. Aber wenn ich die DataSet-Eigenschaft auf SQLQuery1 stelle, bekomme ich die Meldung "Diese Operation ist bei einer unidirektionalen Datenmenge nicht gestattet". Ich habe also die falschen Komponenten verwendet, wenn ich das richtig sehe, nur welche brauche ich? mfg. |
Re: Datenabfrage von Delphi via MySQL
DataSource bei SQLQuery1 wieder rausnehmen (da kommt in diesem fall nix rein)
Delphi-Quellcode:
Dann klappt das auch, denn DBGrid1 <= DataSource1 <= SQLQuery1
DataSource1.DataSet := SQLQuery1;
btw. das ist beim Zugriff auf Paradox auch so gewesen ;) |
Re: Datenabfrage von Delphi via MySQL
Zitat:
Und sobald ich die DataSet-Eigenschaft von DataSource1 auf SQLQuery1 gestellt habe (natürlich als erstes) kann ich dann bei DataSource von SQLQuery nichts mehr einstellen. |
Re: Datenabfrage von Delphi via MySQL
Wenn ich mich recht entsinne, brauchst Du dazu ein ClientDataset. Näheres siehe
![]() |
Re: Datenabfrage von Delphi via MySQL
Ich habe die Komponenten TDataSetProvider und TClientDataSet mit eingebunden, hab aber gerade nicht die Zeit, die Verknüpfungen herzustellen, das werde ich später mal ausprobieren.
Funktioniert bei euch auch der Download-Link von dem aufgeführten Beispiel-Projekt nicht? Das hätte ich mir ja schon mal ganz gerne angeschaut... |
Re: Datenabfrage von Delphi via MySQL
Nicht auf den Link klicken, sondern den Text kopieren :zwinker: :
![]() |
Re: Datenabfrage von Delphi via MySQL
Ich habe mir das Beispielprojekt mal runtergeladen, aber es hilft mir nicht besonders weiter, weil ja erstens eine Table und keine SQL-Komponente verwendet wird und zweitens ich deswegen keine mit MySQL-Workbench erstellten Tabellen öffnen kann.
Ansonsten bin ich noch nicht weitergekommen. |
Re: Datenabfrage von Delphi via MySQL
Liste der Anhänge anzeigen (Anzahl: 1)
Auf Delphi-Treff habe ich, wenn ich das richtig sehe, genau das gefunden, wonach ich suchte:
![]() Direkt auf der Einleitungs-Seite jedoch wird von MySQL-Direct-Units gesprochen und das Problem ist, dass ich diese nicht finde - der Link von Sourceforge führt mich zum Download einer mit Delphi erstellten Anwendung, mit welcher ich eine Verbindung zur Datenbank aufbauen und mir Tabellen anzeigen lassen kann, und auf der Seite von solutions.mysql.com finde ich keine konkrete Download-Datei, die diese Units enthalten könnte. Sind die Links nicht mehr aktuell, bzw. bekomme ich die Units irgendwoanders her? Google hat nicht richtig helfen können, außer die im Anhang mitgeschickte Unit, wobei das auch nicht funktioniert, weil dafür noch andere Units benötigt werden... |
Re: Datenabfrage von Delphi via MySQL
Eine einfache Möglichkeit ist, über ODBC und ADO auf MYSQL zuzugreifen. Ist vielleicht von der Performance nicht das Optimum, aber relativ Stressfrei.
Liegt die MYSQL Datenbank auf einem Webserver, kann man z.B. eine Verbindung über Soap machen; dann also auf dem Client Soapconnection - Clientdataset - Datasource - DBGrid. Auf dem Server brauch man dann entsprechende Routinen, die die Daten in dem speziellen XML-Format liefern, die das Clientdataset versteht; auf einem Windows Server z.B. die HTTPSRVR.dll. Auf Linux kann man das mit einem PHP-Script hinbekommen. Gruß Ralf |
Re: Datenabfrage von Delphi via MySQL
Danke Neumann, das hört sich gut an. Ich weiß nur nicht recht, wie ich den Zugriff gestalten soll...
Wie ich gelesen habe, benutzt man ADO und ODBC parallel, weil sie sich gut ergänzen. Die ADO-Komponenten habe ich jetzt mit eingebunden (TADOConnection und TADOTable), aber wie funktioniert das mit ODBC? ![]() Und dann weiß ich immer noch nicht, wie ich die Verbindung herstellen tue... Das ist alles so kompliziert |
Re: Datenabfrage von Delphi via MySQL
Ich habe jetzt mal versucht, nur per ADO die SQL-Abfragen durchzuführen und mir die Ergebnisse im DBGrid anzeigen zu lassen.
Das scheitert allerdings schon bei der Einstellung der Connection-String-Eigenschaft der TADOQuery-Komponente, weil ich nicht weiß, welchen Provider ich auswählen soll. "Microsoft OLE DB for SQL Server" hat sich passend angehört, aber ich habe keine Verbindung zu stande bekommen, weil ich ja keine mit MySQL erstellten Datenbanken sondern nur SQL-Server-Datenbanken auswählen kann... |
Re: Datenabfrage von Delphi via MySQL
Hier benötigst du entweder eine Provider oder nimmst den ODBC-Provider, dann benötigst du aber einen ODBC-Treiber für MySQL.
Aber zum Ursprungsproblem. Wenn du das GRID auf readonly setzt, sollte es auch mit unidirektionalen Datasets |
Re: Datenabfrage von Delphi via MySQL
Zitat:
Ich bekomme den Zugriff echt nicht "gebacken"... |
Re: Datenabfrage von Delphi via MySQL
Hallo,
ich habe den Zugriff auf die MySQL-Datenbank jetzt endlich über ADO herstellen können. Weil es gut sein kann, dass andere ähnliche Probleme haben, möchte ich meinen Lösungsweg schildern: Zuerst einmal habe ich mir ![]() Die "DataSet"-Eigenschaft von DataSource1 wird auf "ADODataSet1" gesetzt. Mit der TADOQuery-Komponente bietet sich nun die Möglichkeit für Abfragen. ![]() mfg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz