Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MYSQL erkennt mehrere folgende Statements nicht (https://www.delphipraxis.net/84068-mysql-erkennt-mehrere-folgende-statements-nicht.html)

emsländer 10. Jan 2007 21:24

Datenbank: MYSQL • Version: 5.x • Zugriff über: mysqllib

MYSQL erkennt mehrere folgende Statements nicht
 
Moin,

hoffe, das ich schnelle Hilfe bekomme.

Mein SQL-Statement besteht aus mehreren folgenden Statements. Wenn ich nur eines eingebe, klappts. Gebe ich dem MYSQL-Server mehrere zu fressen, werde ich angemeckert. Ich kann die Trennung zwischen zwei Statements machen, wie ich will => No Chance.

Zur Info: Diese Statements befinden sich in einer Stringvariablen, welche an diese Funktion übergeben wird:

Delphi-Quellcode:
function speicher_antrag(stmp : string; _fddcon : PMySQL) :string;
var query : PChar;
    speichercode : integer;
    DatensatzID : integer;
begin
  query := PCHAR(stmp);
  speichercode := mysql_real_query(_fddcon, query, Length(query));
  DatensatzID := mysql_insert_id(_fddcon);
  result := mysql_error(_fddcon);
end;
SQL-Code:
INSERT INTO abn_grid (zu_Akte,Jahre,Basis,VM_Zins,Hunderttausend,Sondertilgung,LV_BSV,Fonds,Summe_Aufschlaege,Tilgung,Zins,Gesamt,Score,Darlehen) VALUES ("2029","10","4.64","0","0","0","0","0","0.5","1","5.14","6.14","6.14","50000");
INSERT INTO abn_grid (zu_Akte,Jahre,Basis,VM_Zins,Hunderttausend,Sondertilgung,LV_BSV,Fonds,Summe_Aufschlaege,Tilgung,Zins,Gesamt,Score,Darlehen) VALUES ("2029","10","4.64","0","0","0","0","0","0.5","1","5.14","6.14","6.14","107500");
Anwort:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; INTO abn_grid (zu_Akte,Jahre,Basis,VM_Zins,Hunderttause

Was tun, sprach Zeus :gruebel:

Gruss

EL

[edit=r_kerber]SQL-Tags eingefügt. Das nächste mal bitte selbst daran denken. Mfg, r_kerber[/edit]

mkinzler 10. Jan 2007 21:32

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Diese Funktion erlaubt nur einfache Queries und keine komplette Skripte.

emsländer 10. Jan 2007 21:38

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Diese Funktion erlaubt nur einfache Queries und keine komplette Skripte.


:cry:

Wenn ich dieses Statement in den MySQL-Admin reinschmeiße gehts doch auch...?


Gibts nen Workaround/ne Abhilfe?


(Verzweifelter) Gruss

EL

Hansa 10. Jan 2007 21:46

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Poste mal die Tabellen-Definition. Dann kann man mal gucken. :shock:

mkinzler 10. Jan 2007 21:49

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Versuch mal die Inserts einzeln auszuführen.

emsländer 10. Jan 2007 21:50

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Versuch mal die Inserts einzeln auszuführen.

Hi,

das geht ja! - Das ist ja der Joke dabei!


Gruss

EL

emsländer 10. Jan 2007 21:52

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von Hansa
Poste mal die Tabellen-Definition. Dann kann man mal gucken. :shock:

Delphi-Quellcode:
-- phpMyAdmin SQL Dump
-- version 2.6.0-pl3
-- [url]http://www.phpmyadmin.net[/url]
-- 
-- Host: localhost:3307
-- Erstellungszeit: 10. Januar 2007 um 22:51
-- Server Version: 5.0.20
-- PHP-Version: 5.0.5
-- 
-- Datenbank: `banken`
-- 

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `abn_grid`
-- 

CREATE TABLE `abn_grid` (
  `lfdnr` int(10) NOT NULL auto_increment,
  `zu_Akte` varchar(10) collate latin1_german1_ci NOT NULL,
  `Jahre` tinyint(2) NOT NULL default '0',
  `Basis` decimal(6,4) default '0.0000',
  `VM_Zins` decimal(6,4) default '0.0000',
  `Hunderttausend` decimal(6,4) default '0.0000',
  `Sondertilgung` decimal(6,4) default '0.0000',
  `LV_BSV` decimal(6,4) default '0.0000',
  `Fonds` decimal(6,4) default '0.0000',
  `Summe_Aufschlaege` decimal(6,4) default '0.0000',
  `Tilgung` decimal(6,4) default '0.0000',
  `Zins` decimal(6,4) default '0.0000',
  `Gesamt` decimal(6,4) default '0.0000',
  `Score` decimal(6,4) default '0.0000',
  `Darlehen` bigint(10) NOT NULL default '0',
  PRIMARY KEY (`lfdnr`),
  KEY `zu_Akte` (`zu_Akte`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
Gruss

EL

mkinzler 10. Jan 2007 21:55

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Versuchs mal mit mysql_query()

Hansa 10. Jan 2007 21:56

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Was ist denn das hier ?
Delphi-Quellcode:
`

emsländer 10. Jan 2007 22:04

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Versuchs mal mit mysql_query()

Der gleiche Shice .... es ist zum :kotz:


Ich häng da nun schon einige Stunden drüber ...


Gruss

EL

mkinzler 10. Jan 2007 22:06

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Schon mit anderen Komponenten versucht?

emsländer 10. Jan 2007 22:08

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Schon mit anderen Komponenten versucht?

Nein

ich arbeite schon von eh her mit der mysqllib... und hatte nie Probleme.


Ich werde mir wohl nen Workaround bauen...

Wie war das nochmal, wenn man einer Funktion eine Stringlist übergibt :gruebel:

So aufrufmäßig.... rechne(quellstringliste, @resultstringliste) : ...



Funktion rechner(quelle, static .. result) ???


Gruss

EL

mkinzler 10. Jan 2007 22:11

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Ich glaube kaum das eine (c)-Funktion in einer Dll etwas mit der (Delphi-)Klasse TStringList anfangen kann.

emsländer 10. Jan 2007 22:15

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Ich glaube kaum das eine (c)-Funktion in einer Dll etwas mit der (Delphi-)Klasse TStringList anfangen kann.


Ich meinte das etwas anders: Man kann doch irgendwie in einem Funktionsaufruf einen Zeiger übergeben? Dann übergebe ich an meinen XML-Decodierer halt nur das @... und hab dann ne Stringlist mit ner Latte an SQL-Statements, die ich dann anschließend abarbeiten kann.

Mit fehlt jetzt nur der Aufbau/die Syntax...




Gruss

EL

mkinzler 10. Jan 2007 22:16

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Dann wäre vielleicht ein Array of PChar das Richtige.

emsländer 10. Jan 2007 22:17

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von mkinzler
Dann wäre vielleicht ein Array of PChar das Richtige.

Hast mal bitte ein Beispiel?


Danke


Gruss

EL

Dax 10. Jan 2007 22:20

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von Hansa
Was ist denn das hier ?
Delphi-Quellcode:
`

Nennt sich Backtick und wird in My benutzt, um Spaltennamen zu umschließen, sofern notwendig.

emsländer 10. Jan 2007 22:22

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von Dax
Zitat:

Zitat von Hansa
Was ist denn das hier ?
Delphi-Quellcode:
`

Nennt sich Backtick und wird in My benutzt, um Spaltennamen zu umschließen, sofern notwendig.


:gruebel: verstehe ich jetzt nicht ...

Bitte mal ein wenig genauer

Gruss

EL

Dax 10. Jan 2007 22:40

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Hansa hat gefragt, wofür der ` gut is (so hab ichs jedenfalls verstanden) - und ich hab drauf geantwortet. MySQL interpretiert das in ` eingeschlossene bei Tabellen- und Spaltennamen als komplette Bezeichnung, wie der MSSQL es mit [] macht oder andere SQL-Server die Bezeichner in " eingeschlossen sehen wollen. Sowas kann zum Beispiel nützlich sein, wenn man eine Spalte nach einen reservierten Bezeichner benennen will.

Hansa 10. Jan 2007 22:47

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von Dax
... Sowas kann zum Beispiel nützlich sein, wenn man eine Spalte nach einen reservierten Bezeichner benennen will.

..was man aber nicht machen sollte. Ist aber hier wohl egal. Kriege die Table jedenfalls nicht in irgendeine DB rein. Insofern gehe ich von einem MySQL-Problem aus und sage : gute Nacht. :mrgreen:

mkinzler 11. Jan 2007 05:23

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Kriege die Table jedenfalls nicht in irgendeine DB rein. Insofern gehe ich von einem MySQL-Problem aus
Eher eine Problem der Zugriffsbibliothek bzw. deren Benutzung. Den das Admintool fühert, wie er sagt das Skript ja aus.
Beim Ausführen in seinem Programm, scheint aber nicht erkannt zu werden, daß es sich um mehrere Statements handelt oder Delphi scheint über die Sonderzeichen (Backstick) zu stolpern, was aber unwahrscheinlich ist, da die Statments einzeln ja funktionieren.

marabu 11. Jan 2007 06:19

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Hallo EL,

für mich stellt sich dein Problem so dar, dass du weder beim Verbindungsaufbau (mysql_real_connect) noch später (mysql_set_server_option) die Verarbeitung von Befehlsstapeln angemeldet hast. Wenn du mit prepared statements arbeitest, dann steht dir das feature laut Handbuch generell nicht zur Verfügung.

Grüße vom marabu

emsländer 11. Jan 2007 08:13

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von marabu
Hallo EL,

für mich stellt sich dein Problem so dar, dass du weder beim Verbindungsaufbau (mysql_real_connect) noch später (mysql_set_server_option) die Verarbeitung von Befehlsstapeln angemeldet hast. Wenn du mit prepared statements arbeitest, dann steht dir das feature laut Handbuch generell nicht zur Verfügung.

Grüße vom marabu

Hi Marabu,

ist mir so nicht bekannt. - Wie melde ich das denn an?

Gruss

EL

marabu 11. Jan 2007 08:32

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Schau mal hier: Behandlung der Ausführung mehrerer Anweisungen

Freundliche Grüße

emsländer 11. Jan 2007 13:18

Re: MYSQL erkennt mehrere folgende Statements nicht
 
Zitat:

Zitat von marabu
Schau mal hier: Behandlung der Ausführung mehrerer Anweisungen

Freundliche Grüße

Werde ich testen. Vielen Dank


Gruss

EL


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz