In meiner SQL Anwendung würde ich gerne prüfen ob es eine Datenbank schon gibt oder eben nicht.
Sollte die Datenbank noch nicht geben, soll sie erstellt werden mit den Entsprechenden Tabellen:
Code: Alles auswählen
procedure TPLForumV1.CreateDB;
var
str:string;
begin
MariaDB.AConnection.DatabaseName:='';
MariaDB.AConnection.Open;
str:='CREATE DATABASE IF NOT EXISTS '+DBName;
MariaDB.AConnection.ExecuteDirect(str);
MariaDB.AConnection.ExecuteDirect('use ' + DBName); // Tipp von Socke in einem anderen Thread.
MariaDB.AConnection.DatabaseName:=DBName;
// Ist leider Wirkungslos. Da es die DB natürlich schon gibt, weil sie vorher schon erstellt wurde, wenn es sie noch nicht gab.
str:='SHOW DATABASES LIKE '''+DBName+''';';
MariaDB.Query.SQL.Text:=str;
MariaDB.Query.ExecSQL;
MariaDB.Query.Open;
MariaDB.Query.SQL.Text:='grant all on '+DBName+'.* to plutodb@localhost;';
MariaDB.Query.ExecSQL;
MariaDB.ATransaction.Commit;
MessageTable.CreateTable();
PostTable.CreateTable();
end; // TPLForumV1.CreateDB
Das Problem ist halt dabei, dass ich nicht wirklich prüfen kann ob es die DB schon gibt, darum musste ich IF NOT EXISTS einsetzten, auch beim erstellen der Tabellen.
Somit ist natürlich " str:='SHOW DATABASES LIKE '''+DBName+''';';" wirkungslos.
Wie kann man das besser lösen?
Mein Ziel ist es:
Prüfen gibt es die Datenbank schon? Wenn ja, wähle sie aus. Mehr nicht. Wenn nicht, erstelle sie, wähle sie aus und erstelle die Tabellen. Derzeit sind es nur zwei, später kommen weitere Tabellen hinzu.