![]() |
Datensätze insertieren
Hi,
ich arbeite mit einer mysql-DB und versuche Datensätze in meine Tabelle zu schreiben: Tabelle_Position:
SQL-Code:
Der Query.text sieht folgendermaßen aus:
+----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | +----------------+------------------+------+-----+---------+----------------+ | Position_ID | int(10) unsigned | | PRI | NULL | auto_increment | | Container_ID | int(10) unsigned | YES | MUL | NULL | | | Auftrag_ID | int(10) unsigned | | MUL | 0 | | | Partie_ID | int(10) unsigned | | MUL | 0 | | | Unterpartie_ID | int(10) unsigned | | MUL | 0 | | | PositionNR | int(10) unsigned | YES | | NULL | | | Menge | int(10) unsigned | YES | | NULL | | | Timestamp | timestamp(14) | YES | | NULL | | | valid | datetime | YES | | NULL | | +----------------+------------------+------+-----+---------+----------------+
SQL-Code:
Als Fehlermeldung erhalte ich:
Insert into Position values('','','1','25','37','1','4','','');
Insert into Position values('','','1','25','38','2','2','',''); Insert into Position values('','','1','25','39','3','2','',''); Insert into Position values('','','1','25','40','4','2','',''); Insert into Position values('','','1','25','41','5','1','',''); Insert into Position values('','','1','25','42','6','1','',''); Zitat:
|
Re: Datensätze insertieren
Hai barnti,
schreibe doch nur die Werte die Du brauchst:
SQL-Code:
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES (1,25,37,1,4)
|
Re: Datensätze insertieren
Benutze statt '' NULL, dann sollte es funktionieren, vorausgesetzt, dein Autoincrement funktioniert.
Grüße Mikhal |
Re: Datensätze insertieren
Du hast wohl noch Oracle im Kopf ;)
In Oracle es ein '' das gleiche wie ein NULL. Es ist also genauso NUMBER, DATE, VARCHAR2,... vielleicht wird das in mySQL anders gehandhabt. Versuch's mal mit NULL anstatt ''. Edit: 3 auf einen Streich :mrgreen: Sharkys Lösung wäre natürlich die beste ;) |
Re: Datensätze insertieren
Hallo,
danke euch. Das waren wohl die schnellsten Antworten, die ich hier je bekommen habe. :) Jo, das mit Oracle stimmt. |
Re: Datensätze insertieren
Mhm...
leider hatte ich mit euren Vorschlägen noch keinen Erfolg:
SQL-Code:
So geht es nicht. Immer noch die selbe Fehlermeldung. Und so:
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','37','1','4')
INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','38','2','2') INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','39','3','2') INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','40','4','2') INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','41','5','1') INSERT INTO Position (Auftrag_ID,Partie_ID,Unterpartie_ID,PositionNR,Menge) VALUES ('1','25','42','6','1')
SQL-Code:
Klappt es ebenfalls nicht. :(. Wo liegt mein Fehler?
Insert into Position values(Null, Null,'1','25','37','1','4',Null,Null);
... |
Re: Datensätze insertieren
hallo beim sql standart werden :
SQL-Code:
nicht immer eindeutig interpretiert.
wert is null oder wert = ''
deshalb sollte man beide Abfragen mit OR verbinden, oder eine Stored Procedure schreiben. raik |
Re: Datensätze insertieren
Hallo noch einaml,
ich habe festgestellt, dass die Fehlermeldung erst in der Exceptionbehandlung auftaucht. Aber diese Exception wird durch das SQL-Statement ausgelöst. Bei eingeschalteten Compilermeldungen bekomme ich den Fehler: Zitat:
SQL-Code:
Kann jemand helfen?
insert into Position values(NULL,NULL,'1','25','37','1','4',NULL,NULL);
insert into Position values(NULL,NULL,'1','25','38','1','2',NULL,NULL); insert into Position values(NULL,NULL,'1','25','39','1','2',NULL,NULL); insert into Position values(NULL,NULL,'1','25','40','1','2',NULL,NULL); insert into Position values(NULL,NULL,'1','25','41','1','1',NULL,NULL); insert into Position values(NULL,NULL,'1','25','42','1','1',NULL,NULL); |
Re: Datensätze insertieren
@raik
ich habe Deine letzte Antwort leider nicht verstanden. Kannst Du mal erklären? Danke! |
Re: Datensätze insertieren
du versuchst in deinen eingaben entweder Null oder '' einzugeben.
es kann sein, das deine felder dies aber unterschiedlich interpretieren. deshalb solltest du die eingaben
SQL-Code:
zulassen und dich nicht auf eins beschränken.
is null oder ''
raik muß jetzt weg, komme aber nachher wieder |
Re: Datensätze insertieren
Stored Procedures in mySQL?
![]() Das wird doch erst in der überüberübernächsten Major Version implementiert sein und funktionieren. :mrgreen: Ich würde die Statements einzeln in einer IDE für mySQL (falls es sowas überhaupt gibt :?: ) ausprobieren. Zur Not reicht auch irgendein kleines Mini Tool, mit dem man Statements absetzen kann. Wenn es dort klappt, hat dein Programm einen Bug :wink: |
Re: Datensätze insertieren
Hi Robert,
mit den Stored Procedures hast Du natürlich recht. Und das es höchtwahrscheinlich an meinem Code liegt ist mir auch klar! ;) Deshalb suche ich ja hier auch nach einer Lösung. Es hat ja eindeutig mit dem Statement zu tun... |
Re: Datensätze insertieren
Ich meinte damit, teste die Statements außerhalb deines Programmes.
|
Re: Datensätze insertieren
Ich denke mal, daß du dein PK-Feld mit einem gültigen Wert füllen mußt, ansonsten muß die Datenbank deinen Datensatz abweisen, weil er gegen die Constraint-Regeln verstößt. Solange du also Position_Id NULL übergibst, muß die Datenbank eine Fehlermeldung ausgeben, da ein PK eigentlich immer UNIQUE und NOT NULL definiert ist. Deine Tabelle läßt aber dort NULL zu, was einem Verstoß gegen die Primary-Constraints darstellt. Voraussetzung ist natürlich, daß du tatsächlich den Primary-Constraint in deiner Tabellendefinition festgelegt hast.
Ich kenne MySQL nur flüchtig und weiß daher auch nicht, wie dort das AutoIncrement realisiert wird. Mußt du den Wert nicht ähnlich wie bei Oracle via Sequence oder ähnlichem zuweisen? Grüße Mikhal |
Re: Datensätze insertieren
mysql kennt keine stored proceduren ?
ich weis schon warum ich ib mache :mrgreen: aber mikhal hat natürlich recht: Zitat:
raik |
Re: Datensätze insertieren
Also,
nun mal 'Butter bei die Fische'. Alles zurück! Die Statements sind so oder so richtig. Das Problem liegt daran, dass ich versucht habe in einer Query mehrere Statements abzufeuern:
SQL-Code:
Das kann so natürlich nicht funktionieren. Erst Statement absetzen dann neues Statement...
Query.add('insert into...');
Query.Add('insert into...'); Ich dachte ich kann das Problem abstrakt beschreiben, leider habe ic dabei etwas wesentliches weggelassen. Nun ja, jetzt funktioniert es... Danke an Alle! |
Re: Datensätze insertieren
Es gibt halt keine anonymen Blöcke in mySQL... :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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