![]() |
Datenbank: MySQL • Version: - • Zugriff über: -
MySQLDB lesen
Hallo..
in PHP sieht eine Abfrage ja bekanntlich ungefähr so aus:
Code:
Wie kann ich soetwas in Delphi mit den DirectSQL Units realisieren?
<?php
$abfrage = "SELECT * FROM daten WHERE id = '1'"; // oder Variable oder soetwas bei id.. $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo '<hr>Vorname: '; echo "$row->Name "; echo 'Nachname: '; echo "$row->ID"; } ?> In die DB schreiben klappt ganz gut
Delphi-Quellcode:
Aber lesen noch nicht so richtig
var
q: String; ex: Boolean; begin q := 'UPDATE daten SET Name = ''' + Edit1.text + ''' WHERE id = 1'; FResult := FMysql.query(q, true, ex); |
Re: MySQLDB lesen
|
Re: MySQLDB lesen
Ich wusste dass das kommt :lol:
Nur leider habe ich mir das schon öfter durchgelsen und ich blicke bei der angeblichen Abfrage von dem Tutorial nicht durch. Wo bitte soll man bei dieser Abfrage an die Daten kommen und diese ausgeben? Edit: ![]() Da blicke ich nicht durch. |
Re: MySQLDB lesen
Delphi-Quellcode:
q ist die Abfarge. In deinem Fall
FResult := FMysql.query(q, true, ex);
SQL-Code:
SELECT * FROM daten WHERE id = 1;
|
Re: MySQLDB lesen
Mhh.. ok "SELECT * FROM daten WHERE id = 1;" also ist das alles gleich wie in sql?
FResult ist ja aber kein String, wie gebe ich denn dieses in einer Textkomponente aus (RichEdit, Label, Memo usw..) |
Re: MySQLDB lesen
Nei FResult ist das Ergebnis: welches du wie auf Seite4(procedure TForm1.TableStructure) beschrieben, auswerten kannst.
|
Re: MySQLDB lesen
1: Irgentwas klappt da bei "procedure TableContent; (...)" nicht.
Wenn daraus procedure Tform1.TableContent; mache und oben bei Private die Procedur (procedure TableContent;) hinzufüge klappt es. (keine Compilierungsfehler) So.. 2: StringGrid1.Cells[2,i+1]:=IntToStr(af.Field_Type); "[Fehler] Unit1.pas(67): E2003 Undefinierter Bezeichner: 'Field_Type'" Edit: Ich kapier das einfach nicht mehr.. (...) Edit2:
Delphi-Quellcode:
Jetzt hab ich es. Diese Auswertungsprocedur die es da noch gibt die hat mich verwirrt! Die braucht man garnicht.. also Text AUSGEBEN klappt jetzt auch!
procedure TForm1.Button8Click(Sender: TObject);
var q: string; ex: boolean; begin if assigned(FResult) then begin if FMysql.Status<>MYSQL_STATUS_READY then ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; q := InputBox('Geben Sie eine Abfrage ein', 'Welche Abfrage durchgeführt werden soll','SELECT * FROM daten WHERE id = 1'); FResult := FMysql.query(q, true, ex); if assigned(FResult) then begin ShowMessage('Query: OK - Ergebnis gespeichert'); TableContent; end else begin if ex then begin ShowMessage('Query: OK - ausgeführt') end else begin ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; end; end; |
Re: MySQLDB lesen
Vielleicht heisst der Member jetzt anders?
|
Re: MySQLDB lesen
Eine generelle Frage hätte ich da jetzt aber noch
Delphi-Quellcode:
das funktioniert nicht und kann ja auch
FMysql.port := Edit4.Text;
nicht funktionieren. Inkompatible Typen: 'Cardinal' und 'TCaption' Klar.. Aber wie mache ich das möglich? Edit: nicht host, sondern port |
Re: MySQLDB lesen
StrToInt, TryStrToInt, Val
|
Re: MySQLDB lesen
Ich wusste bisher garnicht dass man AUCH StrToInt nehmen kann? Mhh.. ich werd mir mal dazu was durchlesen
ok, zufrüh gefreut, da blick ich nicht durch wie du das meinst. Edit: ACH! das war alles mein blöder fehler shconwieder! ich hab ja bis eben noch gedacht dass der host cardinal wäre! es war aber der port! und dass man für cardinal StrToInt nehmen kann ist doch klar :wall: ich gucke falsch |
Re: MySQLDB lesen
Seit wann ist der Host kein String? :gruebel:
|
Re: MySQLDB lesen
Angenommen ich habe folgenden code:
Code:
Wie lasse ich denn das in einem Label anzeigen?
SELECT Vorname FROM Benutzerdaten
|
Re: MySQLDB lesen
Na es ist das erste Feld in der ersten Zeile (Row) des Ergebnisses.
|
Re: MySQLDB lesen
Delphi-Quellcode:
Ohne Gewähr
Label1.Caption := FResult.FieldValue(0);
|
Re: MySQLDB lesen
Also ich habs jetzt so gemacht, weis nicht anders wie:
für vorname/nachname in 2 labels anzuzeigen:
Delphi-Quellcode:
Prozedur:
if assigned(FResult) then begin
if FMysql.Status<>MYSQL_STATUS_READY then ShowMessage('Ein Ergebnis wurde unvollständig gelesen!'); FreeAndNil(FResult); end; q := InputBox('Geben Sie eine Abfrage ein', 'Welche Abfrage durchgeführt werden soll','SELECT dj FROM play'); FResult := FMysql.query(q, true, ex); if assigned(FResult) then begin ShowMessage('Query: OK - Ergebnis gespeichert'); TableContentVorname; end else begin if ex then begin ShowMessage('Query: OK - ausgeführt') end else begin ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; end;
Delphi-Quellcode:
und so habeich das mit beiden labels gemacht..
procedure TForm1.TableContentOnOff;
var i, j: integer; af: TMysql_FieldDef; cr: integer; begin if assigned(FResult) then begin if FResult.ResultType=rtStored then begin cr := FResult.RecNo; FResult.First; for j:=0 to FResult.FieldsCount-1 do Label5.Caption := FResult.FieldValue(j)+'BBB'; FResult.Next; end; FResult.RecNo := cr; end; end; anders weis ich nicht wie :pale: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 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 by Thomas Breitkreuz