CREATE DATABASE datenbank [GELÖST]
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
CREATE DATABASE datenbank [GELÖST]
Habe für die Datenbankcracks eine - wie ich meine - relativ einfache Frage.
Wie erzeuge ich eine Datenbank innerhalb eines Programms? Normalerweise
existiert die zu benutzende Datenbank ja bereits; ich habe sie eingangs auf
der Kommandozeile erzeugt, kann dann unter Lazarus in der MySQLConnection
den Namen eintragen und dann Connected auf True setzen.
Was mache ich aber, wenn ich die Datenbank erst im Programm erzeugen
möchte?
Besten Dank im Voraus,
Michael
Wie erzeuge ich eine Datenbank innerhalb eines Programms? Normalerweise
existiert die zu benutzende Datenbank ja bereits; ich habe sie eingangs auf
der Kommandozeile erzeugt, kann dann unter Lazarus in der MySQLConnection
den Namen eintragen und dann Connected auf True setzen.
Was mache ich aber, wenn ich die Datenbank erst im Programm erzeugen
möchte?
Besten Dank im Voraus,
Michael
Zuletzt geändert von Swirl am Mo 25. Sep 2023, 14:17, insgesamt 1-mal geändert.
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 16
- Registriert: Mo 19. Aug 2013, 22:28
Re: CREATE DATABASE datenbank
Für Firebird und Zeos gibt es Tutorials dazu.
https://lazarus.intern.es/tutorial_fire ... eos_1.html
https://lazarus.intern.es/tutorial_fire ... eos_2.html
Dort wird das Anlegen im Programm erläutert. Mit anderen Datenbanken funktionieren die dort angeführten SQL-Dateien genauso. Man muss herausfinden, wo diese SQL-Dateien ausgeführt werden können. Im Bespiel 2 wird die EXE-Datei mitgeliefert, so dass man damit experimentieren kann. Datenbank braucht nicht installiert werden, die wird als Embedded mitgeliefert.
https://lazarus.intern.es/tutorial_fire ... eos_1.html
https://lazarus.intern.es/tutorial_fire ... eos_2.html
Dort wird das Anlegen im Programm erläutert. Mit anderen Datenbanken funktionieren die dort angeführten SQL-Dateien genauso. Man muss herausfinden, wo diese SQL-Dateien ausgeführt werden können. Im Bespiel 2 wird die EXE-Datei mitgeliefert, so dass man damit experimentieren kann. Datenbank braucht nicht installiert werden, die wird als Embedded mitgeliefert.
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank
Besten Dank LazarusFuchs für die Prompte Antwort.
Ich kann aber in den zwei Kapiteln leider keine Hinweise zur Lösung meines Problems finden.
Ich möchte jetzt auch die Zeos-Komponenten nicht installieren. Und zu Firebird: ich habe
vergessen anzumerken, dass ich mit MySQL arbeite.
Falls jemand mir einen Hinweis in Verbindung mit der Komponente TMySQLConnection
geben kann, wäre ich sehr dankbar.
Gruß,
Michael
Ich kann aber in den zwei Kapiteln leider keine Hinweise zur Lösung meines Problems finden.
Ich möchte jetzt auch die Zeos-Komponenten nicht installieren. Und zu Firebird: ich habe
vergessen anzumerken, dass ich mit MySQL arbeite.
Falls jemand mir einen Hinweis in Verbindung mit der Komponente TMySQLConnection
geben kann, wäre ich sehr dankbar.
Gruß,
Michael
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: CREATE DATABASE datenbank
Man muss sich mit Host/Port/User/Password beim MySQL anmelden. Anschließend kann man mit einer Query den Befehl "CREATE DATABASE <Name der Datenbank>" ausführen. Danach kann man die Tabellen erzeugen mit "CREATE TABLE ...".
Um eine Datenbank erzeugen zu können muss der User die entsprechenden Rechte besitzen, die man zuvor beim MySQL einstellen muss.
Um eine Datenbank erzeugen zu können muss der User die entsprechenden Rechte besitzen, die man zuvor beim MySQL einstellen muss.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank
Hallo MmVisual,
damit kommen wir der Sache schon näher.
wie setze ich aber...
Vielleicht ein/zwei Zeilen Code zu meinem Verständnis?
Gruß,
Michael
damit kommen wir der Sache schon näher.
wie setze ich aber...
...um?Man muss sich mit Host/Port/User/Password beim MySQL anmelden
Vielleicht ein/zwei Zeilen Code zu meinem Verständnis?
Gruß,
Michael
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: CREATE DATABASE datenbank
Das macht man in der Komponente:
Dann so etwas z.B.:
Ich selber nutze Zeos, aber mit SQLDB geht das sicher auch / identisch.Dann so etwas z.B.:
Code: Alles auswählen
Procedure TForm1.FormCreate(Sender: TObject);
Begin
MySQL80Connection1.ExecuteDirect('CREATE DATABASE ...');
end;
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank
Ja, aber wie?
solange ich in der Connection-Komponente den Datenbanknamen nicht eingetragen habe
(da er zur Designzeit ja noch nicht existiert), kann ich sie nicht Connected True schalten.
Und eine SQL-Statement kann ich somit auch noch nicht absetzen.
Ein paar Zeilen Code wären schon nett
Gruß,
Michael
solange ich in der Connection-Komponente den Datenbanknamen nicht eingetragen habe
(da er zur Designzeit ja noch nicht existiert), kann ich sie nicht Connected True schalten.
Und eine SQL-Statement kann ich somit auch noch nicht absetzen.
Ein paar Zeilen Code wären schon nett

Gruß,
Michael
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: CREATE DATABASE datenbank
Es ist schon ein paar Jahre her, ja stimmt, man braucht eine Datenbank um sich überhaupt verbinden zu können. Das sollte dann gehen:
Die Eigenschaft "Catalog" ist etwas was Zeos braucht.
Code: Alles auswählen
dbTest.Database := 'information_schema';
dbTest.Catalog := dbTest.Database;
q.SQL.Text := 'CREATE DATABASE IF NOT EXISTS ' + edDatabase.Text;
q.SQL.Add(' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci');
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank
Hallo,
habe in der Connection von HostName bis UserName alles eingetragen.
Dann mit ExecuteDirect versucht, die Datenbank anzulegen. Leider...
Also leider kein Erfolg
habe in der Connection von HostName bis UserName alles eingetragen.
Dann mit ExecuteDirect versucht, die Datenbank anzulegen. Leider...
Und wie gesagt: ZEOS nutze ich nicht.Database connect string (DatabaseName) not filled in!.
Also leider kein Erfolg
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: CREATE DATABASE datenbank
'information_schema' als DatabaseName geht nicht?
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank
Hallo MmVisual,
zum Connecten genommen werden. Ich nutze dafür db_dummy, die
ich vorher leer angelegt habe. Mit der aktiven Verbindung zu db_dummy
kann ich dann das gewünschte CREATE DATABASE ... ausführen.
Besten Dank!
Das war's dann! information_schema kann wie jede andere Datenbank'information_schema' als DatabaseName geht nicht?
zum Connecten genommen werden. Ich nutze dafür db_dummy, die
ich vorher leer angelegt habe. Mit der aktiven Verbindung zu db_dummy
kann ich dann das gewünschte CREATE DATABASE ... ausführen.
Code: Alles auswählen
MySQL80Connection1.DatabaseName := 'db_dummy'; // Rest in der Komponente festgelegt
MySQL80Connection1.Connected:=True;
MySQL80Connection1.ExecuteDirect('CREATE DATABASE neue_datenbank');
MySQL80Connection1.ExecuteDirect('USE neue_datenbank');
MySQL80Connection1.ExecuteDirect('CREATE TABLE kunden (kunde_id int(11))')
usw...
Zuletzt geändert von Swirl am Mo 25. Sep 2023, 14:30, insgesamt 2-mal geändert.
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: CREATE DATABASE datenbank [GELÖST]
information_schema ist immer da nach der Neuinstallation von MySQL, die db_dummy nicht. Daher besser information_schema verwenden.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Swirl
- Beiträge: 99
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 11 / Mint 22.1 / Lazarus 36 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
Re: CREATE DATABASE datenbank [GELÖST]
Ach - deshalb hast Du die genommen. Gut zu wissen.
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 1058
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: CREATE DATABASE datenbank [GELÖST]
ich will dir da nicht in deine Konzeption dreinreden und kann nur aus meiner Perspektive berichten.Swirl hat geschrieben: Mo 25. Sep 2023, 10:07 Wie erzeuge ich eine Datenbank innerhalb eines Programms?
Klar kann man eine Datenbank in MySQL/MariaDB mit den genannten Strategien auch aus dem Programm heraus anlegen. Dazu muß man aus meiner Sicht gewichtige Gründe haben, denn die Rechte zum Erstellen/Löschen von DBs packe ich nicht in eine ClientApplikation.
Das Rechtemanagement mache ich direkt auf dem DBMS, das hat imho im Programm nichts verloren.
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: CREATE DATABASE datenbank [GELÖST]
Ich stimme da mit CharlyTango überein, das man das normalerweise nicht macht. Ich verwende einen Satz Skripts, die ich für eine neue Installation ablaufen lasse, damit kann ich die Rechte setzen und auch Tabellen mit Stammdaten auch gleich erzeugen.charlytango hat geschrieben: Mo 25. Sep 2023, 19:09 Klar kann man eine Datenbank in MySQL/MariaDB mit den genannten Strategien auch aus dem Programm heraus anlegen
Das einzige wo ich die Datenbank "on the fly" erzeuge ist mit Sqlite für Puffertabellen, wenn ich Daten lokal vorhalten muss, damit die Applikation auch ohne Verbindung laufen kann. Wie gesagt der einzige Fall, da kann man bei einer lokalen Datenbank aber auch nicht mehr soviel mit Security machen - ja ich weis - spezielle SQLite Versionen können das.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).