2013-04-17 13 views
10

Próbuję wstawić wiele wierszy w (najnowsza wersja) tabeli SQLite ale zgłasza błądwstawić wiele wierszy w SQLite

wpadł na pomysł z HERE i tu jest mój kwerendy SQL:

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" 

ale rzuca

SQL logic error or missing database 

near "UNION": syntax error 

to moja struktura tabeli

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 
) 

Czy wystąpił problem z moim zapytaniem?

każda pomoc byłaby doceniona.

TIA

Odpowiedz

27

Ponieważ wspomnieć ostatnią wersję SQLite, należy użyć wielu wartościach wkładkę (obsługiwanego przez SQLite od wersji 3.7.11), na przykład:

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

Jest krótsza, szybsza i mniej podatne na błędy . Ta składnia jest również obsługiwana przez niektóre inne bazy danych (przynajmniej MySQL i PostgreSQL).

+0

Czy wersja urządzenia SQLite jest zależna? –

+1

Tak i nie. SQLite to biblioteka. Jeśli korzystasz (starsza) ze współużytkowanej biblioteki SQLite, to będzie od niej zależało. Można jednak użyć statycznego łączenia z nowszą wersją, aby uniknąć zależności od urządzenia – mvp

3

W swoim drugim oświadczeniu związkowej masz superflous '' po znaku "fałsz". To jest najprawdopodobniej problem.

Powiązane problemy