![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: -
MySQL Zugriff über Delphi 2009
Hallo ihr Experten! :dp:
Ich würde in meinem Projekt gerne auf meine MySQL Datenbank zugreifen.(Webhoster=bplaced falls das wichtig ist) Nur um in eine Tabelle Datensätze einzufügen und zu ändern, nichts großartiges... Jetzt suche ich allerdings eine dementsprechen einfache Möglichkeit darauf zuzugreifen. Nachdem ich durch Googlen und Forensuche unter anderem auf ZEOS stieß und bei allen probierten Möglichkeiten entweder von Fehlern überhäuft wurde oder es schlichtweg nicht verstanden hab wollte ich euch fragen, was die für euch sinnvollste und einfachste Möglichkeit ist, möglicherweise auch nur ein Link. Vielen Dank schonmal mfG |
Re: MySQL Zugriff über Delphi 2009
hast du überhaupt externen Zugriff auf deine MySQL-DB (Einfach z.B. mit MySQL Admin zu testen das du direkt von MySQL bekommst)?
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
|
Re: MySQL Zugriff über Delphi 2009
Danke für die Antworten erstmal.
Es ist so, dass ich mir mit Tortoise SVN die Delphi 12 Version von Zeos geholt habe, beim kompilieren der Projektgruppe erhalte ich allerdings viele Fehlermeldungen.. unter anderem, dass er ZURL.dcu nicht finden kann... nach einer Windows suche auf allen Festplatten stellte ich fest, dass ich sie weder als .dcu noch als .pas habe... Könnt ihr mir da helfen? |
Re: MySQL Zugriff über Delphi 2009
Ok, ich hab bei meinem Hoster gelesen, dass es nur intern möglich ist, also hat sich das erledigt :( muss ich mit ftp und indy arbeiten... oder?
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
Da zu zu 99,9% PHP zur Verfügung hast wirst du dir da was basteln müssen (Stichwort: WebService, JSON, ...) |
Re: MySQL Zugriff über Delphi 2009
Ich meine ja, dass ich statt in die DB einfach in Textdateien speicher, wobei das ziemlich unbequem sein wird...
Zitat:
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
schau dass du zeos oder sonst eine db-komponente zum Laufen bekommst, dann kannst du auf die Db aus Delphi heraus zugreifen. |
Re: MySQL Zugriff über Delphi 2009
Zitat:
|
Re: MySQL Zugriff über Delphi 2009
Wie gesagt, kann ich bei bplaced nur intern(über php dateien auf dem Server) zugreifen... leider
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
OT: wäre eine Überlegung wert, den Provider zu wechseln ;-) |
Re: MySQL Zugriff über Delphi 2009
Zitat:
MS hatte bei der MSDE das Leidvoll aufgrund des SQL Slammer's einsehen müssen. |
Re: MySQL Zugriff über Delphi 2009
Vielleicht ist Tunneln ( stunnel, zedebee, ssh, ...) erlaubt
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
![]() |
Re: MySQL Zugriff über Delphi 2009
Hmmm.... Provider werde ich nicht wechseln... Tunneln hab ich keine Ahnung was es ist, aber wenn ich dann kostenpflichtige Komponenten brauche lieber nicht.
Naja, könnte ich theoretisch über Indy auf eine php datei zugreifen und über die auf die Datenbank |
Re: MySQL Zugriff über Delphi 2009
Zitat:
Um das machen zu können, müsstest du dich mit PHP auskennen, und dann diese entsprechenden Funktionen in PHP auf dem Server implementieren. In deinem Fall also wahrscheinlich eine Funktion, die etwas in die MySQL-Datenbank schreibt. Diese Funktion sollte dann ein paar Parameter haben, mit denen du ihr mitteilen kannst, was in die DB geschrieben werden soll. Und aus Delphi heraus rufst du sie dann einfach mit den entsprechenden Parametern auf und schreibst somit dann über einen kleinen Umweg in die Datenbank. Ob das von der Performance oder der Art der Daten her für dich letztlich relevant ist, kann ich natürlich erstmal nicht beurteilen. Wenn das für dich interessant klingt, solltest du vielleicht folgendes tun:
Tja, jetzt liegt wohl letztlich dann daran, ob du Zeit und Lust hast, dich mit dem Thema zu beschäftigen. Ich fands damals eigentlich ganz spannend und faszinierend, was so alles geht. :) Bis denn Bommel |
Re: MySQL Zugriff über Delphi 2009
Tunneln bedeutet über ein anderes Protokoll.
Code:
verschlüsselt
Anwendung -> localhost Port 3360 -------------> Entfernter Host Port 22 -> MySQL-Server Port 3360 |
Re: MySQL Zugriff über Delphi 2009
Ich habe mich erkundigt ob ich nuSOAP installieren darf oder es auch so geht, und bekam zur antwort, dass es nicht geht, wenn ichs richtig verstanden habe:
![]() |
Re: MySQL Zugriff über Delphi 2009
Wenn du mich fragst hat chrisb dir eine Antwort auf eine ganz andere Frage gegeben . SOAP Kommunikation - egal ob PHP intern oder mit NuSoap - läuft normalerweise auf Port 80 über http, wie ein normaler Browser, und ist damit auf einem Webserver fast immer erlaubt, weil sie technisch gesehen eben das selbe ist wie ein Zugriff mit einem Webbrowser. Deswegen denke ich das du evtl. nochmal nachaken solltest, ob du jetzt SOAP Unterstützung bekommst. NuSoap kannst du aber auch ohne Nachfrage und Installation einer Extension benutzen, denn das ist ja nur eine Sammlung von PHP Skripten die du hochladen und include'n mußt.
|
Re: MySQL Zugriff über Delphi 2009
Zitat:
Mit nuSOAP solltest du keine Probleme haben - einfach ausprobieren. Es sind ja nur ein paar PHP-Dateien, die man hochladen muss. Und dann halt selbst verstehen, wie das Ganze funktioniert. Bis denn Bommel |
Re: MySQL Zugriff über Delphi 2009
Eigentlich reicht es für einfache Anwendungen, die keine grösseren Schutz benötigen, völlig aus, über http Kommandos an eine PHP-Datei zu senden, die dann entsprechend der Kommandos die Daten entweder aus der Datenbank ausliest und zurück gibt, oder aber gesendete Daten prüft und in die Datenbank einträgt oder updatet.
Sowas geht recht einfach mit den Indi´s, nem einfachen php-Script und einer mySql-Datenbank auf Deinem Server. Ist wirklich nicht schwer! |
Re: MySQL Zugriff über Delphi 2009
Hallo BBommel und troud.
Da ich keine wichtigen daten wie passwörter übertrage, sondern nur z.B. einen aktuellen Spielstand bräuchte ich keine große Sicherheit. Kannst du mir erklären, wie ich mit Indy eine php datei 'ausführe'? DAnke, mfg |
Re: MySQL Zugriff über Delphi 2009
Du brauchst eigentlich nur auf Deinem Formular die Komponente IdHTTP1 zu platzieren, einen Button erzeugen und ungefähr folgenden Code dem Button zuweisen:
Delphi-Quellcode:
So und hier noch ein ungefährer Aufbau des php-Scripts
procedure TForm1.Button1Click(Sender: TObject);
var Stream:TStringStream; LParams: TStringlist; begin Stream := TStringStream.Create('');//Rückgabe-Stream erstellen LParams := TStringlist.Create; try LParams.Add('cmd=TuWas');//+name); LParams.Add('id='+inttostr(123)); LParams.Add('datum='+DateToStr(Date)); LParams.Add('zeit='+TimeToStr(Time)); try IdHTTP1.Post('http://www.dein_server.de/scripts/feedback.php', LParams, Stream); Showmessage(Stream.DataString); //Antwort von Deinem php-Script except on E: Exception do showmessage('Leider trat folgendes Problem auf: ' + E.Message); end; finally LParams.Free; Stream.Free; end; end;
Delphi-Quellcode:
Ist jetzt nicht getestet, aber so in der Art habe ich das schon ziemlich oft gemacht. Kannst Du Dir anpassen, wie Du´s brauchst.
<?
include("connect.php"); //diese php-datei stellt die verbindung zu sql-datenbank her //übernahme der empfangenen paramter $cmd = $_POST['cmd']; $id = $_POST['id']; $datum = strftime("%Y.%m.%d"); $zeit = $uhrzeit = date("H:i:s"); //ausgabe der daten //das gesendete "TuWas" erhälst du hier also zurück //man kann natürlich auch echte kommandos schicken und diese dann auswerten/reagieren echo($cmd); ?> |
Re: MySQL Zugriff über Delphi 2009
Danke, ich habs mit folgenden Codes probiert:
Delphi-Quellcode:
Die saves.php
Stream := TStringStream.Create('');//Rückgabe-Stream erstellen
LParams := TStringlist.Create; try LParams.Add('name=NonPlusUltra');//+name); LParams.Add('level='+IntToStr(GameState.Level)); try IdHTTP1.Post('http://www.vascodagama.bplaced.net/programs/lotnc/saves.php', LParams, Stream); Showmessage(Stream.DataString); //Antwort von Deinem php-Script except on E: Exception do showmessage('Leider trat folgendes Problem auf: ' + E.Message); end; finally LParams.Free; Stream.Free; end
Code:
Ich bekomme eine leere Message Box also sollte alles funktioniert haben, in der Datenbank ist allerdings noch alles beim alten...
<?php
//übernahme der empfangenen paramter $name = $_POST['name']; $level = $_POST['level']; //ausgabe der daten //das gesendete "TuWas" erhälst du hier also zurück //man kann natürlich auch echte kommandos schicken und diese dann auswerten/reagieren $verbindung = mysql_connect("localhost", "BENUTZERNAME" , "PASSWORT") or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db("DATENBANKNAME") or die ("Datenbank konnte nicht ausgewählt werden"); $result = mysql_query("UPDATE lotnc SET level='$level' WHERE name LIKE '$name'"); ?> mfG |
Re: MySQL Zugriff über Delphi 2009
Hm, dann versuchs doch mal so, dass DU Dir per Echo die ID des zuletzt geänderten Datensatzes schicken lässt.
Damit sollte es aber klappen: mysql_affected_rows — Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation Dann würde ich mal noch prüfen, ob die 2 Parameter für das Update überhaupt dem upzudatenden Datensatz entsprechen in ihrer Schreibweise. Wenn das alles nix hilft, würde ich es mal mit einem Testinsert der Daten versuchen und einen Blick in die Datenbank riskieren, respektive Dir die ID des neuen Datensatzes per echo schicken lassen. |
Re: MySQL Zugriff über Delphi 2009
Ach gott bin ich blöd! :wall:
ich hab name geschrieben anstatt username jetzt funktionierts super. Vielen dank :) :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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