简体   繁体   中英

QT SQLite multiple INSERT INTOs won't work in one query

I have the following Query:

query.prepare(QString::fromStdString("INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('rd@hs.aa','Roland','Dietrich','RD');"
                                         "INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('ch@hs.aa','Christian','Heinlein','CH');"
                                         "INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('dk@hs.aa','Detlef','Küpper','DK');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (1,'Bachelor','Max Maier',NULL,NULL,NULL,NULL,'rd@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Codegenerierung mit Enterprise Architect','Softwareentwicklung, Modellierung','Abschlussarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (2,'Master','Moritz Busch',NULL,NULL,'Bosch',NULL,'rd@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Testautomatisierung für Getriebesteuerungen','Automotive, Softwaretest','Externe Arbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (3,'Projekt','Frieda Bolte','Beispiel: Seminar- verwaltung','SE',NULL,6,'rd@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Schichtenarchitekturen mit Qt','Softwareentwicklung, Softwarearchitektur','Projektarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (4,'Sonstige','Paul Lämpel',NULL,NULL,NULL,4,'rd@hs.aa',NULL,NULL,'abgeschlossen','E-Motion Motorsteuerung','Automotive, E-Mobilität','Wahlprojekt');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (5,'Bachelor','Maria Kurz',NULL,NULL,NULL,NULL,'ch@hs.aa','01.01.2020','13.03.2020','abgebrochen','Ein 2-Pass-Compiler für MOSTflexiPL','Funktionale Programmiersprachen','Abschlussarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (6,'Master','Ulrike Lang',NULL,NULL,NULL,NULL,'ch@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Ein 2-Pass-Compiler für MOSTflexiPL','Funktionale Programmiersprachen','Abschlussarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (7,'Projekt','Ulrich Frei','Anwendungs- Beispielele: verschiedene Suchalgorithmen','SE',NULL,6,'ch@hs.aa',NULL,NULL,'abgeschlossen','Funktionale Programmiersprachen im Vergleich','Haskell, Lisp, MOSTflexiPL, Quick- Sort, Insert-Sort, Tree- Sort.','Projektarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (8,'Projekt','Martin Fromm','Programm- bibliothek mit klassischen ADTs','SE',NULL,4,'ch@hs.aa',NULL,NULL,'abgeschlossen','Abstrakte Datentypen in MOSTflexiPL','Stack, List, Queue, Tree, Graph','Projektarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (9,'Bachelor','Franz Groß',NULL,NULL,NULL,NULL,'dk@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Datenbanken für die Software- Versionierung','Softwareentwicklung, Konfigurationsmanagement, SQL','Abschlussarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (10,'Master','Fritz Klein',NULL,NULL,NULL,NULL,'dk@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Intelligente lernende Agenten','Künstliche Intelligenz','Abschlussarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (11,'Projekt','Hans Schmidt','Demobeispiele mit Qt5','MI','',3,'dk@hs.aa',NULL,NULL,'abgeschlossen','Gestaltungsaspekte von grafischen Benutzungsoberflächen','Mensch-Maschine- Kommunikation','Projektarbeit');"
                                         "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (12,'Projekt','Heiner Müller',NULL,NULL,NULL,8,'dk@hs.aa',NULL,NULL,'abgeschlossen','NoSql-Datenbanken vs. Relationale Datenbanken – Sinnvolle Einsatzszenarien','SQL, Relationenmodell, MongoDB, MySQL','Master-Projekt');"

In QT this won't work, but if I paste all Inserts (of course without the \ before the Quotes) in my Database Program they execute just fine. Is there an Issue in QT which doesn't allow multiple INSERT INTOs in one query or why doesn't it work?

Your QString contains non-ASCII characters ü - by my guessing - which will be 's encoding.

A quick solution I found is using QString::fromWCharArray :

QString string{ QString::fromWCharArray(
    L"INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('rd@hs.aa','Roland','Dietrich','RD');\n"
    "INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('ch@hs.aa','Christian','Heinlein','CH');\n"
    "INSERT INTO \"dozenten\" (\"email\",\"vorname\",\"nachname\",\"passwort\") VALUES ('dk@hs.aa','Detlef','Küpper','DK');\n"
    "INSERT INTO \"arbeit\" (\"id\",\"art\",\"bearbeiter\",\"erlaeuterung\",\"studiengang\",\"firma\",\"semester\",\"betreuer\",\"anfangsdatum\",\"enddatum\",\"status\",\"titel\",\"stichworte\",\"arbeitstyp\") VALUES (1,'Bachelor','Max Maier',NULL,NULL,NULL,NULL,'rd@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Codegenerierung mit Enterprise Architect','Softwareentwicklung, Modellierung','Abschlussarbeit');"
    ...
) };

But I am not familiar with all QString functions and which is the best to use. I don't even know why the L is needed... I suggest you search for yourself after the correct converting method.

Output (on QPlainTextEdit ):

INSERT INTO "dozenten" ("email","vorname","nachname","passwort") VALUES ('rd@hs.aa','Roland','Dietrich','RD');
INSERT INTO "dozenten" ("email","vorname","nachname","passwort") VALUES ('ch@hs.aa','Christian','Heinlein','CH');
INSERT INTO "dozenten" ("email","vorname","nachname","passwort") VALUES ('dk@hs.aa','Detlef','Küpper','DK');
INSERT INTO "arbeit" ("id","art","bearbeiter","erlaeuterung","studiengang","firma","semester","betreuer","anfangsdatum","enddatum","status","titel","stichworte","arbeitstyp") VALUES (1,'Bachelor','Max Maier',NULL,NULL,NULL,NULL,'rd@hs.aa','01.01.2020','01.07.2020','abgeschlossen','Codegenerierung mit Enterprise Architect','Softwareentwicklung, Modellierung','Abschlussarbeit');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM