Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MYSQL Direct --> Tabelle erstellen (https://www.delphipraxis.net/113301-mysql-direct-tabelle-erstellen.html)

Logan 5. Mai 2008 20:39

Datenbank: MySQL • Version: 5.1 • Zugriff über: MYSQL Direct

MYSQL Direct --> Tabelle erstellen
 
Abend!

Ich habe mich heute ein wenig mit MySQL Direct beschäftigt (http://www.delphi-treff.de/tutorials.../mysql-direct/) und musste leider etwas spät feststellen, dass man damit keine Tabellen erstellen kann (ist nicht im Tutorial enthalten).
Sowas müsste doch eine Datenbankverbindung unterstützen!

Weiß einer, ob dies möglich ist? Und falls ja wäre ein "wie" nett ;)

Danke schon einmal!

MfG
Logan

Bernhard Geyer 5. Mai 2008 22:17

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von Logan
Sowas müsste doch eine Datenbankverbindung unterstützen!

Kann doch jede. Einfach das Create Table DDL schreiben und dann mit Exec(ute) bzw. ExecSQL zur DB abschicken. Und nicht vergessen das der verwendete User die entsprechenden Rechte besitzen muss.

Logan 5. Mai 2008 23:17

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Kann doch jede.
SQL Direct besitzt solche Methoden nicht :(

christian_r 6. Mai 2008 05:33

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von Logan
SQL Direct besitzt solche Methoden nicht :(

MySQL Direct muss sie auch nicht besitzen. Denn es schickt lediglich Deine Query an die Datenbank-Engine, und diese entscheidet, ob die Query ausführbar ist oder nicht, und sendet Dir entweder einen Fehlercode mit entsprechender Fehlermeldung oder ein Ergebnis.

Wäre es umgedreht, dann müsste MySQL Direct quasi eine eigene DB-Engine verwenden, damit auch jede denkbare Kombination von MySQL-Syntax vor dem Versenden validiert werden kann. Die DB-Engine müsste zusätzlich konsequent weiterentwickelt werden um neue MySQL-Versionen unterstüzen zu können. Das wäre dann ein völlig abwegiges Konzept.

Deltachaos 6. Mai 2008 17:06

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von christian_r
Zitat:

Zitat von Logan
SQL Direct besitzt solche Methoden nicht :(

MySQL Direct muss sie auch nicht besitzen. Denn es schickt lediglich Deine Query an die Datenbank-Engine, und diese entscheidet, ob die Query ausführbar ist oder nicht, und sendet Dir entweder einen Fehlercode mit entsprechender Fehlermeldung oder ein Ergebnis.

Wäre es umgedreht, dann müsste MySQL Direct quasi eine eigene DB-Engine verwenden, damit auch jede denkbare Kombination von MySQL-Syntax vor dem Versenden validiert werden kann. Die DB-Engine müsste zusätzlich konsequent weiterentwickelt werden um neue MySQL-Versionen unterstüzen zu können. Das wäre dann ein völlig abwegiges Konzept.

Da ich mich in letzter Zeit auch mit dem Thema beschäftigt habe kann ich dir meines wissens nach volgendes veraten:

Delphi-Quellcode:

  form1.FMysql.Host := 'IP';
  form1.FMysql.port := 3306; //soweit ich weis standard

  form1.FMysql.user := 'dfgdfg'; //username
  form1.FMysql.password := 'dshfhd'; //Password dser Dtb.
  form1.FMysql.UnixSocket := '';
  form1.FMysql.Db := 'gkfkg'; // Datenbank auf dem Server

  form1.FMysql.UseNamedPipe := false;
  form1.FMysql.UseSSL := false;
  form1.FMysql.Compress := true;
  form1.FMysql.TrySockets := false;
  if form1.FMysql.Connect //wen verbunden
  then
    ...
  else
    ...
fals du dass noch nicht wusstest. aber jetzt zum interresanten teil.

Delphi-Quellcode:
var ex: boolean;
begin
  form1.FMysql.query('"Tabellen_Name"("Spalte 1" "Datentyp_für_Spalte_1","Spalte 2" "Datentyp_für_Spalte_2")', true,  
  ex);
{
  Bsp.
    CREATE TABLE customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50),
    City char(50),
    Country char(25),
    Birth_Date date) 
näheres dazu [url=http://sql.1keydata.com/de/sql-create-table.php]hier[/url]
}
  if ex
  then
    showmessage('Befehl Ausgefürt')
  else
    showmessage('FEHLER: ' + FMysql.LastError); //MySQL Fehlermeldung ausgeben
end;
soweit ich weis kanst du per Query jeden MySQL Befehl ausfüren. binn mir aber nicht sicher!

:mrgreen: :mrgreen:

DeddyH 6. Mai 2008 17:09

Re: MYSQL Direct --> Tabelle erstellen
 
Naja, der CREATE TABLE-Befehl fehlt da irgendwie :mrgreen:

Logan 6. Mai 2008 17:49

Re: MYSQL Direct --> Tabelle erstellen
 
Ah mit der query Methode kann man das also machen?!
Die Methode hätten die Entwickler auch anders benennen können -.- Bzw von der eigentlichen Query Methode abkoppeln...
Vielen Dank!!!

christian_r 6. Mai 2008 19:41

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von DeddyH
Naja, der CREATE TABLE-Befehl fehlt da irgendwie :mrgreen:

Tut mir leid, noch einmal: Quark! ;) Ich hab die "CREATE TABLE" im Zusammenhang mit MySQL Direct auch verwendet.

Gibt verschiedene Ursachen. Angefangen bei vergessener Auswahl einer DB am Server, weiter über fehlende Rechte, wie Bernhard schon schrieb, bis hin zu anderen möglichen Ursachen.

Was genau kann man bei Dir nicht sagen, aber besser wäre es bei Dir noch einmal alles zu überprüfen. Ein nicht implementiertes "CREATE TABLE" bei MySQL Direct ist auf jeden Fall NICHT das Problem.

christian_r 6. Mai 2008 19:45

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von Logan
Die Methode hätten die Entwickler auch anders benennen können ...

Wieso? CREATE TABLE ist doch eine MySQL-native Query? Eine Query ist und bleibt eine Query und sollte deshalb besser auch weiterhin so heißen.

Deltachaos 7. Mai 2008 18:35

Re: MYSQL Direct --> Tabelle erstellen
 
Zitat:

Zitat von DeddyH
Naja, der CREATE TABLE-Befehl fehlt da irgendwie :mrgreen:

Oh beim tippen vergessen
nochmal:

Delphi-Quellcode:
var ex: boolean;
begin
  form1.FMysql.query('CREATE TABLE Tabelle1(Spalte1 datentyp, Spalte2 datentyp, ...)', true, ex);
{
  Bsp.
    CREATE TABLE customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50),
    City char(50),
    Country char(25),
    Birth_Date date) 
näheres dazu [url=http://sql.1keydata.com/de/sql-create-table.php]hier[/url]
}
  if ex
  then
    showmessage('Befehl Ausgefürt')
  else
    showmessage('FEHLER: ' + FMysql.LastError); //MySQL Fehlermeldung ausgeben
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz