Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neue Datenbank erstellen (https://www.delphipraxis.net/64147-neue-datenbank-erstellen.html)

Aenogym 28. Feb 2006 09:12

Datenbank: MySQL • Version: 5.0 • Zugriff über: BDE über MySQL-ODBC-Treiber

Neue Datenbank erstellen
 
hi leute,

ich habe hier ein kniffliges problem :?

ich benutze TDatabase und TQuery, um über den MySQL-ODBC-Treiber mit meiner datenbank zu kommunizieren. damit das klappt, muss man natürlich in den ODBC-Datenquellen den Treiber einrichten und ihm auch schon einen Datenbanknamen nennen.

mein programm muss jetzt allerdings eine funktion bereitstellen, die auf dem bekannten MySQL-server eine neue datenbank erstellt und in zukunft auf diese verbindet.
da der benutzer meines programms anfangs aber noch garkeine datenbank auf dem server hat, diese nicht manuell einrichten kann und auch den ODBC-treiber nicht unbedingt manuell enrichten soll, stehe ich vor einem großen problem :(

wie würdet ihr das lösen?

danke,
aeno

Bernhard Geyer 28. Feb 2006 09:15

Re: Neue Datenbank erstellen
 
Zitat:

Zitat von Aenogym
wie würdet ihr das lösen?

BDE wegschmeißen und native Zugriffskomponenten nehmen die nicht auf ODBC-Datenbquellen angewiesen sind.

Du wirst auch noch viele andere Vorteile haben:

- Keine Installation von MyODBC bzw. u.U. aktuelle ODBC-Version
- Keine Einrichtung von ODBC
- Keine BDE mit ihrer nötigen Installation und ihren vielen Fehlern

Aenogym 28. Feb 2006 09:23

Re: Neue Datenbank erstellen
 
daran dachte ich auch schon. und ich würde es mir auch wünschen.
aber da das programm mit seinen knapp 40.000 zeilen (laut compilerfortschritt) vollgepackt mit BDE-code ist und ich nur noch bis freitag zeit habe, sah ich das als letzte möglichkeit :pale:
(zu meiner verteidigung: ich hab das programm nur übernommen - die entscheidung zur BDE hat jemand anders getroffen -.-)

danke trotzdem, dann werd ich mich wohl reinhängen müssen mit dem abändern...

aeno

PS: habe gelesen, dass ZEOS gut sein soll. ist es sehr verschieden von der BDE-arbeitsweise oder kann ich meinen code relativ leicht abändern?

Bernhard Geyer 28. Feb 2006 09:28

Re: Neue Datenbank erstellen
 
Zitat:

Zitat von Aenogym
... und ich nur noch bis freitag zeit habe, sah ich das als letzte möglichkeit :pale:
(zu meiner verteidigung: ich hab das programm nur übernommen - die entscheidung zur BDE hat jemand anders getroffen -.-)

Ok. Du bist entschuldigt. Aber es ist trotzdem besser früher als später mit der Umstellung zu beginnen.

Zitat:

Zitat von Aenogym
PS: habe gelesen, dass ZEOS gut sein soll. ist es sehr verschieden von der BDE-arbeitsweise oder kann ich meinen code relativ leicht abändern?

Ist eine alternative. Weiß jedoch nicht wie gut die schon mit der neuen Passwortverschlüsselung von MySQL-Versionen > 4.1 zurechtkommen ...
Sonst ist es relative ähnlich der BDE-Programmierung (Sind eigentlich fast alle auf TDataset-Basierenten Komponenten):

jensw_2000 28. Feb 2006 09:44

Re: Neue Datenbank erstellen
 
Ich verwende MSSQL und beschreibe dir mal 2 Varianten, wie man es dort lösen kann.
Ebentuell findest du eine angepasste Lösung für MySQL.


Weg 1: DDL Script
-------------------

Baue die ein DDL Script (Textdatei), in der du die Datenbank, Tabelle, Views usw. definierst

SQL-Code:
CREATE DATABASE [Test]
GO
USE [Test]
CREATE TABLE [Testtable1] .... bla
Das Script kann auf dem MSSQL mit OSQL -S DerSqlServer -E -i MeinScript.sql ausgeführt werden.
Das kannst du über ein einfaches ShellExecute realisieren.
Bei MySQL gibt es sicher ein Äquivalent zur osql.exe.

Weg 2: Backup
-------------
Erstelle ein Backup (Dump) deiner Datenbank.
Bei MSSQL kannst du das Backup unter einem anderen DB-Namen wiederherstellen.

Das kann man auch mit einem Script Automatisieren..

SQL-Code:
RESTORE DATABASE [<NeueDB>]
FROM
  DISK = '<Backup-Datei>'
WITH
  FILE = 1,
  NOREWIND,
  NOUNLOAD
GO

Schöne Grüße,
Jens
:hi:

Aenogym 28. Feb 2006 09:55

Re: Neue Datenbank erstellen
 
hi jens,

danke für deine antwort. an so etwas habe ich auch schon gedacht. problem an der sache ist nur, dass ich keinen direkten zugriff auf den server-rechner habe (also kann ich die DDL-datei schonmal nicht ausführen lassen).
und das mit dme datenbank-dump würde auch nicht klappen, da ich momentan nur dann eine verbindung zum mysql-server aufbauen kann, wenn bereits eine datenbank besteht.

ich denke, dass ich besser ohne BDE/ODBC fahre, wie bernhard es schon gesagt hat.
jetzt installiere ich erstmal schnell zeos und versuche, das programm umzustricken.

steffen

Phoenix 28. Feb 2006 13:45

Re: Neue Datenbank erstellen
 
Zitat:

Zitat von Aenogym
ich benutze TDatabase und TQuery, um über den MySQL-ODBC-Treiber mit meiner datenbank zu kommunizieren. damit das klappt, muss man natürlich in den ODBC-Datenquellen den Treiber einrichten und ihm auch schon einen Datenbanknamen nennen.

mein programm muss jetzt allerdings eine funktion bereitstellen, die auf dem bekannten MySQL-server eine neue datenbank erstellt und in zukunft auf diese verbindet.

Mit den libmysql.dll - Wrappern von hier kannst Du, wenn Du die libmysql.dll mitlieferst, eine native Verbindung zur Datenbank herstellen. Hier kannst Du dann auch direkt die nötige Datenbank anlegen. Diese trägst Du dann in den ODBC-Eintrag ein und der Rest läuft wie gehabt.

Mavarik 28. Feb 2006 17:00

Re: Neue Datenbank erstellen
 
Zitat:

Zitat von Bernhard Geyer
BDE wegschmeißen und native Zugriffskomponenten nehmen die nicht auf ODBC-Datenbquellen angewiesen sind.

Du wirst auch noch viele andere Vorteile haben:

- Keine Installation von MyODBC bzw. u.U. aktuelle ODBC-Version
- Keine Einrichtung von ODBC
- Keine BDE mit ihrer nötigen Installation und ihren vielen Fehlern

Das wäre welche?

dbExpress SQLConnection? :gruebel:
(wo muss den hier die LIBMYSQL.Dll liegen? Die findert diese Komponente bei mir nicht, obwohl die DLL sowohl
in D6/bin als auch Im Windows\System32 liegt!

oder bibt es eine Möglichkeit über ADO? :thumb:

Welche Componente ist sowohl in D6,D7,D2005,D2006,D2007??? Enthalten?

Frank :coder:

marsupilami79 28. Feb 2006 17:41

Re: Neue Datenbank erstellen
 
Hallo,

hoffe mal, ich mach mich jetzt mit meinen Vorschlägen nicht gleich völlig zum Drops.

Zitat:

Zitat von Aenogym
und das mit dme datenbank-dump würde auch nicht klappen, da ich momentan nur dann eine verbindung zum mysql-server aufbauen kann, wenn bereits eine datenbank besteht.

Nuja -> Aber existiert nicht auf jedem mysql-Server die Datenbank mysql? Da verwaltet der doch Zugriffsrechte usw? Mit der müßtest du dich doch verbinden können.

Zitat:

Zitat von Aenogym
problem an der sache ist nur, dass ich keinen direkten zugriff auf den server-rechner habe (also kann ich die DDL-datei schonmal nicht ausführen lassen).

Könntest du die DDL-Statements nicht z.B. aus einer Textdatei in eine Query laden und die Query ausführen?

Bernhard Geyer 28. Feb 2006 18:33

Re: Neue Datenbank erstellen
 
Zitat:

Zitat von Mavarik
Das wäre welche?

Ich empfehle MyDAC

Zitat:

Zitat von Mavarik
dbExpress SQLConnection? :gruebel:
(wo muss den hier die LIBMYSQL.Dll liegen? Die findert diese Komponente bei mir nicht, obwohl die DLL sowohl
in D6/bin als auch Im Windows\System32 liegt!

Würde ich auch nicht empfehlen. Selbst unter D2006 werden nur passende Treiber bis MySQL 4.0 mitgeliefert. Und du mußt einiges an der Anwendung für dbExpress umbauen.

Zitat:

Zitat von Mavarik
oder bibt es eine Möglichkeit über ADO? :thumb:

Gehen schon, aber empfehle ich auch nicht. Wieder zu viel zum installieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 Uhr.
Seite 1 von 2  1 2      

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