AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Probleme mit MySql (Timeproblem)

Probleme mit MySql (Timeproblem)

Ein Thema von juelin · begonnen am 17. Dez 2016 · letzter Beitrag vom 17. Dez 2016
Antwort Antwort
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
95 Beiträge
 
Delphi XE5 Professional
 
#1

Probleme mit MySql (Timeproblem)

  Alt 17. Dez 2016, 12:28
Datenbank: MySql • Version: 5.6.24 • Zugriff über: Delphi Xe5
brauche Hilfe,
ich habe eine Procedure geschrieben welche ein Tabelle leert und anschliessend wieder füllt.
Die ersten SQL-Befehle sind 1. Truncate Table, 2. Insert Into Table
Wenn ich die Procedure zum 1. mal aufrufe läuft alles ok.
Wenn ich die Procedure zum 2. mal aufrufe bekomme ich bei dem Insert Into
den Fehler "falsche SQL-Syntax".
Normalerweise hate die Tabelle über 8000 Sätze.
Wenn ich das gleiche Spiel mit nur einem Datensatz in der Tabelle mache läuft alles super.
Keine Ahnung was das ist, auf jeden Fall kein Syntax-Error.
Scheint ein Zeitproblem zu sein.

ich hätte ja die Source geschickt,
ist aber zu groß.
Ich arbeite mit DBEXPRESS Komponenten.
Gruß Jürgen

Form1.SQLDataSet1.CommandText:='TRUNCATE TABLE Strecke';
h2:=Form1.SQLDataSet1.ExecSQL(True);
if h2 <> 0 then
begin
JaNein:=messagedlg('Fehler beim Löschen Strecke', mtError, [mbOk], 0);
abbruch:=True;
close;
end;
Form1.SQLDataSet1.CommandText:='INSERT INTO Strecke (Type, Nummer, Einfahrt, Ausfahrt, Gleis, Gleisnummer, Stellung, vorher, nachher, Status) VALUES (:Type, :Nummer, :Einfahrt, :Ausfahrt, :Gleis, :Gleisnummer, :Stellung, :vorher, :nachher, :Status)';
Form1.SQLDataSet1.ParamByName('Type').Name:='Type' ;
Form1.SQLDataSet1.ParamByName('Type').DataType:=ft Integer;
Form1.SQLDataSet1.ParamByName('Type').Value:=0;
Form1.SQLDataSet1.ParamByName('Nummer').Name:='Num mer';
Form1.SQLDataSet1.ParamByName('Nummer').DataType:= ftInteger;
Form1.SQLDataSet1.ParamByName('Nummer').Value:=0;
Form1.SQLDataSet1.ParamByName('Einfahrt').Name:='E infahrt';
Form1.SQLDataSet1.ParamByName('Einfahrt').DataType :=ftString;
Form1.SQLDataSet1.ParamByName('Einfahrt').Value:=' ';
Form1.SQLDataSet1.ParamByName('Ausfahrt').Name:='A usfahrt';
Form1.SQLDataSet1.ParamByName('Ausfahrt').DataType :=ftString;
Form1.SQLDataSet1.ParamByName('Ausfahrt').Value:=' ';
Form1.SQLDataSet1.ParamByName('Gleis').Name:='Glei s';
Form1.SQLDataSet1.ParamByName('Gleis').DataType:=f tInteger;
Form1.SQLDataSet1.ParamByName('Gleis').Value:=0;
Form1.SQLDataSet1.ParamByName('Gleisnummer').Name: ='Gleisnummer';
Form1.SQLDataSet1.ParamByName('Gleisnummer').DataT ype:=ftInteger;
Form1.SQLDataSet1.ParamByName('Gleisnummer').Value :=0;
Form1.SQLDataSet1.ParamByName('Stellung').Name:='S tellung';
Form1.SQLDataSet1.ParamByName('Stellung').DataType :=ftInteger;
Form1.SQLDataSet1.ParamByName('Stellung').Value:=0 ;
Form1.SQLDataSet1.ParamByName('vorher').Name:='vor her';
Form1.SQLDataSet1.ParamByName('vorher').DataType:= ftInteger;
Form1.SQLDataSet1.ParamByName('vorher').Value:=0;
Form1.SQLDataSet1.ParamByName('nachher').Name:='na chher';
Form1.SQLDataSet1.ParamByName('nachher').DataType: =ftInteger;
Form1.SQLDataSet1.ParamByName('nachher').Value:=0;
Form1.SQLDataSet1.ParamByName('Status').Name:='Sta tus';
Form1.SQLDataSet1.ParamByName('Status').DataType:= ftInteger;
Form1.SQLDataSet1.ParamByName('Status').Value:=0;
h2:=Form1.SQLDataSet1.ExecSQL(False);
if h2 <> 1 then
begin
JaNein:=messagedlg('Fehler beim Anlegen Strecke', mtError, [mbOk], 0);
abbruch:=True;
close;
end;

Gruß Jürgen
Jürgen Linder
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.731 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Probleme mit MySql (Timeproblem)

  Alt 17. Dez 2016, 12:51
Kämpfen wir uns mal an das Problem ran.
Ich sehe an deinem Quellcode schon ein paar Probleme die evtl. was mit dem Fehler zu tun haben.

1, Du verwendest Feldnamen die bei MySQL auch Schlüsselwörter sind (https://dev.mysql.com/doc/refman/5.7/en/keywords.html).
Evtl. versucht MySQL bei weideren Ausführungen diese auch wirklich als Schlüsselwörter zu interpretieren

2, Was sollen die Zuweisungen bewirken?
Form1.SQLDataSet1.ParamByName('Type').Name:='Type' ;
Vor allem wen du mit

Form1.SQLDataSet1.ParamByName('Stellung').Name:='S tellung';

Den Parameternamen änderst dürfte die zweite Ausführung des Commandtext fehlschlagen

3, Wenn du viele Werte Schreibst solltest du die Anweisung perparend
Delphi-Quellcode:
MyDS.CommandText:='INSERT INTO Strecke (Type, Nummer, Einfahrt, Ausfahrt, Gleis, Gleisnummer, Stellung, vorher, nachher, Status) VALUES (:Type, :Nummer, :Einfahrt, :Ausfahrt, :Gleis, :Gleisnummer, :Stellung, :vorher, :nachher, :Status)';
MyDS.Prepare;

// Hier deine Schleife
MyDS.ParamByName('Nummer').Value:=0;
MyDS.ParamByName('Ausfahrt').Value:=' ';
MyDS.ParamByName('Gleis').Value:=0;
MyDS.ParamByName('Gleisnummer').Value :=0;
...
h2:=Form1.SQLDataSet1.ExecSQL(False);
// Hier Ende Schleife

MyDS.Unprepare;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf