Entwickler-Ecke
Datenbanken - SQL Query Tool führ nichts aus
MarkusReisser - Fr 29.08.08 12:00
Titel: SQL Query Tool führ nichts aus
Hallo,
ich möchte mir ein SQL Query Tool schreiben.
Zur Zeit habe ich alles, bis auf die SQL Query Funktion. Nur leider beginnt da schon das Problem. Ich kann mich verbinden mit der Datenbank. Das klappt 100%. Ich kann die Verbindung trennen. Ich kann eine DB auswählen, erstellen und löschen. Zumindest sagt er mir das. Nur wenn ich dann ins PhpMyadmin gehe, dann sehe ich da keine DB, die ich aber gerade erstellt hatte...
//
Habe gerade rausgefunden... Die DB löschen macht er, wenn ich die Verbindung trenne. Und die Datenbank erstellen, das macht er, wenn ich die Verbindung trenne und das Tool schließe. Hm, woran kann das denn liegen?
Hier mal der Code. Vllt findet ja einer einen Fehler:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, umysqlvio, uMysqlCT, uMysqlClient, uMysqlHelpers, StdCtrls;
{$I mysqlinc.inc}
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Memo1: TMemo; Button3: TButton; Edit5: TEdit; Button4: TButton; Edit6: TEdit; Button5: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private FMysql: TMysqlClient; FResult: TMysqlResult; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin FMysql := TMysqlClient.create; end;
procedure TForm1.Button1Click(Sender: TObject); begin FMysql.Host:=Form1.Edit1.Text; FMysql.port:= 3306; FMysql.user:=Form1.Edit2.Text; FMysql.password:=Form1.Edit3.Text; FMysql.UnixSocket := ''; FMysql.Db := 'mysql'; FMysql.UseNamedPipe := false; FMysql.UseSSL := false; FMysql.Compress := true; FMysql.TrySockets := false; if FMysql.Connect then ShowMessage('Verbindung erfolgreich hergestellt') else ShowMessage('Fehler: '+FMysql.LastError) end;
procedure TForm1.Button2Click(Sender: TObject); begin if FMysql.Connected then begin FMysql.close; ShowMessage('Verbindung erfolgreich getrennt') end else ShowMessage('Es war keine Verbindung aufgebaut'); FMysql.Free; if FResult<>nil then FResult.free; end;
procedure TForm1.Button3Click(Sender: TObject); var db:string; begin if FMysql.Connected then begin db:=Form1.Edit4.Text; if db='' then db:='mysql'; if FMysql.select_db(db) then ShowMessage('Select db: OK') else ShowMessage('Select db fehlgeschlagen: '+FMysql.LastError) end else ShowMessage('Es besteht keine Verbindung'); end;
procedure TForm1.Button4Click(Sender: TObject); var db:string; begin db:=Form1.Edit5.Text; if db='' then db:=InputBox('Fehler','Welche DB?',''); if FMysql.create_db(db) then ShowMessage('Create db: OK') else ShowMessage('Create db fehlgeschlagen: '+FMysql.LastError); end;
procedure TForm1.Button5Click(Sender: TObject); var db:string; begin db:=Form1.Edit6.Text; if db='' then db:=InputBox('Fehler','Welche DB?',''); if FMysql.drop_db(db) then ShowMessage('Drop db: OK') else ShowMessage('Drop db fehlgeschlagen: '+FMysql.LastError); end;
end. |
Danke schonmal im Vorraus an alle...
Hier mal ein Bild, zur Veranschaulichung.
MarkusReisser - Fr 29.08.08 14:06
Hallo,
wenn ich nen SQL Query ausführe, dann geht das sofort:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button6Click(Sender: TObject); var q:string; ex: boolean; begin if assigned(FResult) then begin if FMysql.Status<>MYSQL_STATUS_READY then ShowMessage('Unvollständig'); FreeAndNil(FResult); end; q:=Form1.Memo1.Text; FResult:=FMysql.query(q, true, ex); if assigned(FResult) then ShowMessage('Query: OK - Ergebnis gespeichert') else if ex then ShowMessage('Query: OK - ausgeführt') else ShowMessage('Query fehlgeschlagen: '+FMysql.LastError); end; |
Mit dem COMMIT befrage ich mal google
Danke schonmal
Mfg Markus
iKilledKenny - Fr 29.08.08 14:24
OffTopic:
Du weisst aber,
a) dass es für MySQL den MySQL Administrator und den MySQL QueryBrowser gibt?
b) dass du bei den meisten WebHostern nicht direkt auf die DB verbinden kannst?
Ich weiss, dass das eine Menge Annahmen meinerseits sind und ich will dir nicht den Wind aus den Segeln nehmen, wollte das aber mal angemerkt haben...
:angel:
baka0815 - Fr 29.08.08 16:40
MarkusReisser hat folgendes geschrieben: |
Hallo,
wenn ich nen SQL Query ausführe, dann geht das sofort |
SELECT-Abfragen werden auch sofort beantwortet (je nach Einstellung siehst du jedoch nur Daten deiner Transaktion).
Wenn du ein
UPDATE oder
DELETE-Statement (siehe auch
DML [
http://de.wikipedia.org/wiki/DML]) ausführst, wirst du dieses auch erst (in einem anderen Client) sehen, nachdem die Transaktion abgeschlossen ist.
Wann das passiert hängt von den DB-Einstellungen ab. Entweder steht diese auf "auto commit", dann wir nach jedem
DELETE sofort gelöscht, sofern du nicht explizit eine Transaktion anforderst (bei MS SQL der Fall) oder eben nicht, dann musst du jeden ändernden Befehl (
UPDATE/
DELETE) per
COMMITbestätigen oder per
ROLLBACKwieder zurück nehmen.
Ich schlage vor, du schaust dir erstmal ein paar Tutorials zu SQL im generellen an. Aber Vorsicht: Auch wenn SQL '92 ein Standard ist, so setzt ihn kaum eine Datenbank vollständig um (das gleiche gilt für SQL '99 und 2003).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!