AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Script über TADOConnection ausführen schlägt fehl
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Script über TADOConnection ausführen schlägt fehl

Ein Thema von Alexandra · begonnen am 17. Nov 2011 · letzter Beitrag vom 22. Nov 2011
Antwort Antwort
Alexandra

Registriert seit: 17. Nov 2011
2 Beiträge
 
#1

SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 17. Nov 2011, 14:58
Datenbank: MySQL • Version: 5.1.11 • Zugriff über: TADOConnection
Hallo zusammen,

ich google nun schon seit einiger Zeit nach einer Lösung für mein Problem, konnte aber bisher leider nichts Passendes finden.
Vielleicht kann mir ja hier jemand weiterhelfen.

Ich muss ein größeres SQL-Script in Delphi ausführen.
Bisher habe ich für solche Fälle ein TADOQuery verwendet und das Script in einzelne SQLs zerlegt.

Da dieses Script aber Benutzervariablen enthält, deren Wert durch das Script verändert wird, funktioniert das in diesem Fall nicht.

Auch mit der Verwendung von TADOConnection hatte ich wenig Erfolg.
Bereits nach dem ersten Delimiter bekomme ich eine Syntax-Fehlermeldung.

Hat jemand eine Idee?

Vielen Dank
Alexandra
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 17. Nov 2011, 16:07
Ich glaub, die ADO Componenten können eigentlich nur ein Statement verarbeiten. Also TADOQuery im wesentlichen.
Ich behelfe mir bei Oracle, indem ich einen anonymen Block bilde, aber da gibt es wiederum ein Größenbeschränkung und mir ist auch nicht bekannt, ob es etwas Vergleichbares für mySQL gibt.
Da gibts hier aber sicher Kenner.

Ansonsten müsste man andere Komponenten finden.

P.S.:
Und herzlich willkommen..
Gruß, Jo

Geändert von jobo (17. Nov 2011 um 16:10 Uhr)
  Mit Zitat antworten Zitat
Alexandra

Registriert seit: 17. Nov 2011
2 Beiträge
 
#3

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 09:26
Hallo Jo,

vielen Dank für die schnelle Antwort

TADOQueries können nur ein Statement verarbeiten, aber TADOConnection sollte
eigentlich mit einem Script klarkommen.
Vielleicht habe ich nur eine Einstellung übersehen?

Bei den Komponenten bin ich leider ziemlich festgelegt.

Viele Grüße
Alexandra
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 09:41
Schon mal mit TAdoCommand versucht?

Sollte eigentlich mehrere Statements abarbeiten können.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 13:09
Soweit ich das verstanden habe, kann ADO immer nur ein Statement ausführen.
Wenn die Verbindung aber nicht unterbrochen wird, bleibt die Session erhalten und auch die gesetzten Benutzer-Variablen (sind ja Session-Variablen).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 13:21
Eigentlich müsste es doch eine Stored Procedure geben, mit der man ein SQL-Script ausführen kann.
Beim MS SQL Server gibt es z.B. "sp_executesql".
Andreas
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 13:53
Auch ein ADO Command Objekt kann m.E. kein Script ausführen.
Die ADOConnection erst Recht nicht, vielleicht verleiten Dich BeginTrans usw. zu dieser Idee. Diese ADOConnection-Befehle beziehen sich aber lediglich auf Start und Abschluss von DML Anweisungen, die über die anderen ADO Compos (Command, Query, StoredProc) angefallen sind/anfallen werden.

Ob es eine SP für Scripte gibt, weiß ich auch nicht.

Was ist denn der Script Inhalt, um den es hier geht? Z.B. klassisches DDL Script, Modelle einspielen Stammdaten einfügen?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Slater
Slater

Registriert seit: 18. Okt 2004
Ort: Frankfurt a. M. Höchst
6 Beiträge
 
Delphi 2007 Professional
 
#8

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 14:10
Servus...
bei MySQL gibt es sogenannte Stored Procedures... aber auch Trigger...

Vielleicht hilft es dir ja wenn Du dein Großes Script auf dem Server "vorbereitetst" und dann mit call in einem einzelnen Statement abrufst und alles mögliche als Parameter übergibst...


Cheers
Christian
Alles ist Gift, nur die Dosis ist entscheidend!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 18. Nov 2011, 19:50
ADO kann (zumindest mit MSSQL) beliebig lange Skripte ausführen. Diese können tausende einzelner SQL-Kommandos enthalten. Irgendwann bemerkte ich mal eine Beschränkung auf 1000 Zeichen, aber neulich habe ich das mal wieder verifiziert und das simmt so nicht.

Ich verwende immer die Execute-Methode der TADOConnection für meine ellenlangen Skripte.

Wenn es hier zu Problemen kommt, dann liegt es vielleicht am Delimiter. Oder an der Parametrierung der Anweisung. So ist z.B. das Datumsformat meines ollen SQL-Servers anders, wenn ich in T-SQL etwas ausführe, als wie wenn ich das über ADO absetze.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: SQL-Script über TADOConnection ausführen schlägt fehl

  Alt 22. Nov 2011, 07:56
Diese Methode unter TADOConnection war mir nicht bekannt. Meine Tests mit Oracle haben allerdings keine brauchbaren Ergebnisse gebracht.
M.E. verhält sich die Komponente unter Oracle genauso, wie query oder command. Vielleicht steckt auch nichts anderes dahinter als ein TADOCommand Aufruf. Anonyme Blöcke sind ok, aber echte Scripte nicht.
(ich lasse mich gerne vom Gegenteil überzeugen)

Wie das unter mySQL und MSSQL aussieht, kann ich nicht sagen. MS würde ich immerhin zutrauen, dass Scripte mit der eigenen DB laufen.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:24 Uhr.
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