2013-04-17 2 views
10

ich mehrere Zeilen in einer SQLite (neueste Version) Tabelle einzufügen versuche aber wirft einen FehlerLegen Sie mehrere Zeilen in SQLite

die Idee von HERE bekam und hier ist meine SQL-Abfrage:

INSERT INTO "Track" 
SELECT "Leonard Collections" AS "Album", 
     "Instrumental" AS "Artist", 
     "00:02:59.3800000" AS "Duration", 
     "1/1/0001 12:00:00 AM" AS "ReleasedDate", 
     "If You Love Me" AS "Title", 
     "False" AS "IsPlayableOnLocal" 
UNION 
SELECT "Leonard Collections", 
     "Instrumental", 
     "00:02:56.6930000", 
     "1/1/0001 12:00:00 AM", 
     "Espoir", 
     "False", 
UNION 
SELECT "Leonard Collections", 
     "Instrumental", 
     "00:03:51.6770000", 
     "1/1/0001 12:00:00 AM", 
     "Don't Cry For My Argentina", 
     "False" 

aber es wirft

SQL logic error or missing database 

near "UNION": syntax error 

das ist meine Tabellenstruktur

CREATE TABLE Track 
(
    ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 
    Album VARCHAR(100) NULL , 
    Artist VARCHAR(255) NOT NULL DEFAULT "Artist Unknown", 
    Duration VARCHAR(255) NOT NULL , 
    LocalPath VARCHAR(255) NULL , 
    ReleasedDate DATE NOT NULL , 
    Title VARCHAR(255) NULL , 
    IsPlayableOnLocal INTEGER NOT NULL , 
    Rating VARCHAR(255) NULL 
) 

Gibt es ein Problem mit meiner Abfrage?

jede Hilfe wäre willkommen.

TIA

Antwort

27

Da Sie neueste Version von SQLite erwähnen, sollten Sie mehrwertig Einsatz verwenden (unterstützt von SQLite seit Version 3.7.11), wie folgt aus:

INSERT INTO mytable (col1, col2, col3) VALUES 
    (1, 2, "abc"), 
    (2, 4, "xyz"), 
    (3, 5, "aaa"), 
    (4, 7, "bbb"); 

Dies ist kürzer, schneller und weniger fehleranfällig . Diese Syntax wird auch von einigen anderen Datenbanken (mindestens MySQL und PostgreSQL) unterstützt.

+0

Ist die SQLite-Version vom Gerät abhängig? –

+1

Ja und Nein. SQLite ist eine Bibliothek. Wenn Sie (ältere) geteilte SQLite-Bibliothek verwenden, hängt es davon ab. Sie können jedoch statische Verknüpfungen mit neueren Versionen verwenden, um Geräteabhängigkeiten zu vermeiden – mvp

3

In Ihrer zweiten Gewerkschaft Aussage haben Sie superflous '' Zeichen nach "False". Das ist wahrscheinlich das Problem.