(mySQL) Create Table zur Laufzeit

Alfred_

Erfahrenes Mitglied
Hi,
ein ausführliches Gespräch über die Vorzüge von MySQL(hohe Verarbeitungsgeschwindigkeit) gegenüber MSSQL(bessere Performance im Web) hat mich überzeugt die "Fronten" zu wechseln.
Die Anbindung war soweit ok. Nur beim Löschen und Generieren von Tabellen zur Laufzeit gibts Brösel:
Ich erhalte die Fehlermeldung: ...near 'DROP ..... bis K1 at Line2 ein Syntaxproblem. Die restlichen 8 Zeilen der Message betreffen Interna.
Ist es möglich, dass es zum Unterschied von MSSQL NICHT möglich ist, in einem Rutsch zu Löschen und zu Generieren und wenn doch, wo liegt der Fehler?
Code:
    Dim strSQL As String = "USE stammdaten" & vbCrLf & _
      "DROP TABLE IF EXISTS Tabelle1" & vbCrLf & _
       "CREATE TABLE Tabelle1 (" & _
       "Datum date," & _
       "K1 TINYINT," & _
       "K2 TINYINT," & _
       "K3 TINYINT," & _
       "K4 TINYINT," & _
       "K5 TINYINT," & _
       "KombiID INT NOT NULL AUTO_INCREMENT PRIMARY KEY," & _
       "Treffer VARCHAR(1)," & _
       "KombiHit VARCHAR(5))" & _
       "ENGINE = MyISAM" & _
       "DEFAULT CHARSET = latin1 COLLATE = latin1_german1_ci"
Im MySQL-QueryBrowser funktioniert die Create Anweisung tadellos.

Nach der DROP-Anweisung wird die USE-Anweisung zurückgesetzt, weshalb ich über Versuch und Irrtum ein Script im MySQL-Script erstellt habe das funktioniert. Es geht offensichtlich auch das Löschen und Generieren in einem Rutsch.
Im Script steht:
USE stamdaten
DROP TABLE IF EXISTS tabelle1;
USE stammdaten
CREATE TABLE tabelle1(
etc. ... wie oben
Für mich erhebt sich jetzt die Frage wie man diese Anweisung in ein Script umwandelt.
Dafür wäre ich sehr dankbar.
Grüße


// edit

Mit Ausnahme der auskommentierten Zeile funktioniert dieser String:
Code:
    Dim strSQL As String = "USE stammdaten;" & _
      "DROP TABLE IF EXISTS tabelle1;" & _
      "USE stammdaten;" & _
      "CREATE TABLE tabelle1(" & _
       "Datum date," & _
       "K1 TINYINT," & _
       "K2 TINYINT," & _
       "K3 TINYINT," & _
       "K4 TINYINT," & _
       "K5 TINYINT," & _
       "KombiID INT NOT NULL AUTO_INCREMENT PRIMARY KEY," & _
       "Treffer VARCHAR(1)," & _
       "KombiHit VARCHAR(5))" & _
       "ENGINE = MyISAM;"
    '"DEFAULT CHARSET = latin1 COLLATE = latin1_german1_ci;" ' hier gibts die Fehlermeldung
Die Frage, die sich für mich stellt lautet: Ist die Angabe des Zeichensatz und der Sortierordung unabdingbar, bzw. was mache ich in dieser letzten Zeile falsch?
Grüße
 
Hi,
ein ausführliches Gespräch über die Vorzüge von MySQL(hohe Verarbeitungsgeschwindigkeit) gegenüber MSSQL(bessere Performance im Web) hat mich überzeugt die "Fronten" zu wechseln.
Die Anbindung war soweit ok. Nur beim Löschen und Generieren von Tabellen zur Laufzeit gibts Brösel:
Ich erhalte die Fehlermeldung: ...near 'DROP ..... bis K1 at Line2 ein Syntaxproblem. Die restlichen 8 Zeilen der Message betreffen Interna.
Ist es möglich, dass es zum Unterschied von MSSQL NICHT möglich ist, in einem Rutsch zu Löschen und zu Generieren und wenn doch, wo liegt der Fehler?
Code:
    Dim strSQL As String = "USE stammdaten" & vbCrLf & _
      "DROP TABLE IF EXISTS Tabelle1" & vbCrLf & _
       "CREATE TABLE Tabelle1 (" & _
       "Datum date," & _
       "K1 TINYINT," & _
       "K2 TINYINT," & _
       "K3 TINYINT," & _
       "K4 TINYINT," & _
       "K5 TINYINT," & _
       "KombiID INT NOT NULL AUTO_INCREMENT PRIMARY KEY," & _
       "Treffer VARCHAR(1)," & _
       "KombiHit VARCHAR(5))" & _
       "ENGINE = MyISAM" & _
       "DEFAULT CHARSET = latin1 COLLATE = latin1_german1_ci"
Im MySQL-QueryBrowser funktioniert die Create Anweisung tadellos.

Nach der DROP-Anweisung wird die USE-Anweisung zurückgesetzt, weshalb ich über Versuch und Irrtum ein Script im MySQL-Script erstellt habe das funktioniert. Es geht offensichtlich auch das Löschen und Generieren in einem Rutsch.
Im Script steht:
USE stamdaten
DROP TABLE IF EXISTS tabelle1;
USE stammdaten
CREATE TABLE tabelle1(
etc. ... wie oben
Für mich erhebt sich jetzt die Frage wie man diese Anweisung in ein Script umwandelt.
Dafür wäre ich sehr dankbar.
Grüße


// edit

Mit Ausnahme der auskommentierten Zeile funktioniert dieser String:
Code:
    Dim strSQL As String = "USE stammdaten;" & _
      "DROP TABLE IF EXISTS tabelle1;" & _
      "USE stammdaten;" & _
      "CREATE TABLE tabelle1(" & _
       "Datum date," & _
       "K1 TINYINT," & _
       "K2 TINYINT," & _
       "K3 TINYINT," & _
       "K4 TINYINT," & _
       "K5 TINYINT," & _
       "KombiID INT NOT NULL AUTO_INCREMENT PRIMARY KEY," & _
       "Treffer VARCHAR(1)," & _
       "KombiHit VARCHAR(5))" & _
       "ENGINE = MyISAM;"
    '"DEFAULT CHARSET = latin1 COLLATE = latin1_german1_ci;" ' hier gibts die Fehlermeldung
Die Frage, die sich für mich stellt lautet: Ist die Angabe des Zeichensatz und der Sortierordung unabdingbar, bzw. was mache ich in dieser letzten Zeile falsch?
Grüße

Es ist vollbracht :)
Der vollständige Code lautet:
Code:
    Dim strSQL As String = "USE stammdaten;" & _
      "DROP TABLE IF EXISTS tabelle1;" & _
      "USE stammdaten;" & _
      "CREATE TABLE tabelle1(" & _
       "Datum date, " & _
       "K1 TINYINT, " & _
       "K2 TINYINT, " & _
       "K3 TINYINT, " & _
       "K4 TINYINT, " & _
       "K5 TINYINT, " & _
       "KombiID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, " & _
       "Treffer VARCHAR(1), " & _
       "KombiHit VARCHAR(5)) " & _
       "ENGINE = MyISAM, " & _
       "DEFAULT CHARSET = latin1, " & _
       "COLLATE = latin1_german1_ci;"
 
ein ausführliches Gespräch über die Vorzüge von MySQL(hohe Verarbeitungsgeschwindigkeit) gegenüber MSSQL(bessere Performance im Web) hat mich überzeugt die "Fronten" zu wechseln.

Hi,

eine These, die du auch beweisen solltest. MySQL ist nicht immer besser als SQL Server.
Du solltest wenn dann schon selbst Messungen anstellen, die speziell für dein Datenbank und dein Skripts konzipiert sind. Nur dann kannst du definitiv sagen, welces DBMS schneller ist. Diese Aussage ist aber auch dann nur für diesen Fall gültig.
Außerdem kommt es auch auf ein sinnvolles DB-Design an. schlechtes Design macht jedes DBMS langsam. Dabei muss man jedoch die einzelnen Punkte eines DBMS beachten. Was bei DBMS A eine Verbesserung bewirkt, kann bei DBMS B zum Nachteil sein. Also nicht einfach auf solche subtilen Aussagen wie "ist schneller" hören, sondern selbst eine Meinung bilden.
 
Hi,
wie Du richtig schreibst geht es um die "subjektive" Wahrnehmung. Es steht mir auch nicht zu - zumindest nicht mit meinem Wissen -, "objektive" Urteile über MSSql zu treffen. Entscheidend war für mich die Tatsache, dass die lizenzfreie Version mit 4 GB beschränkt ist und auch nicht die Dual-Prozessoren unterstützt (was heutzutage jeder Schlepptop hat). Ich habe auch nicht vor, "Glaubenskriege" über dieses oder jenes Produkt zu initialisieren. Es sollte jeder mit seiner individuellen Version "glücklich" werden.
Ich hoffe, dass damit alle "Klarheiten";) beiseitigt sind.
Herzliche Grüße
 

Neue Beiträge

Zurück