Czy za każdym razem muszę dodawać id pomimo określenia przy tworzeniu tabeli "autoincrement primary key" ?

0

Cześć,próbuje zrobić gui w JavaFX które będzie odpowiedzialne za zarządzanie schroniskiem dla zwierząt. Gdy próbuje dodać do bazy nowego kota,dostaje błąd
"INSERT INTO Cats VALUES ('test','test','test','test',123)
excecption at exec action
[SQLITE_ERROR] SQL error or missing database (table Cats has 6 columns but 5 values were supplied)"

Czy za każdym razem przy dodawaniu kolejnego obiektu ( w tym przypadku kolejnego kota) muszę dodawać także id? Myślałem że będzie to robione automatycznie.

Baza danych:
http://wklej.org/id/3341157/
Koty (model)
http://wklej.org/id/3341158/
Dodaj kota ( controller)
http://wklej.org/id/3341159/

0

A masz triggera który autoinkremetuje?

0

Zajrzałeś chociaż do kodu? :) W stringu który jest odpowiedzialny za tworzenie tabeli dodałem to ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT.

0

Trigger piszesz w bazie, ma obsługiwać autoinkrementację.

0

Sekwencji też nie ma... Wrrrr.

0

Autoinkrementacja zadziała jeżeli nie podasz żadnej wartości. Teraz próbujesz na siłę wepchnąć tam NULL, a baza nie nadpisze Twojej wartości i ją wstawi, po czym rzuci błąd bo łamiesz constraint.
Żeby zadziałało zrób inserta nie deklarując jawnego wrzucania ID:

INSERT INTO CATS(name, race , gender, coat_color,age) values (?, ?, ?, ?, ?);
0
krzysiek050 napisał(a):

Autoinkrementacja zadziała jeżeli nie podasz żadnej wartości. Teraz próbujesz na siłę wepchnąć tam NULL, a baza nie nadpisze Twojej wartości i ją wstawi, po czym rzuci błąd bo łamiesz constraint.
Żeby zadziałało zrób inserta nie deklarując jawnego wrzucania ID:

INSERT INTO CATS(name, race , gender, coat_color,age) values (?, ?, ?, ?, ?);

Chodzi o "insertCat" tak? Zrobiłem tak jak napisałeś http://wklej.org/id/3341186/ . I niestety nadal to samo.

0
Eman napisał(a):

Chodzi o "insertCat" tak? Zrobiłem tak jak napisałeś http://wklej.org/id/3341186/ . I niestety nadal to samo.

Tak.
Na pewno to samo?
[SQLITE_ERROR] SQL error or missing database (table Cats has 6 columns but 5 values were supplied)"
No, nie wydaje mi się, żeby był ten sam wyjątek...

0

Magia :)

INSERT INTO Cats VALUES ('abc','abc','abc','abc',1)
excecption at exec action
[SQLITE_ERROR] SQL error or missing database (table Cats has 6 columns but 5 values were supplied)

0

Wyszczególnij kolumny, pomijając id, wtedy pójdzie.

0
Ktos napisał(a):

Wyszczególnij kolumny, pomijając id, wtedy pójdzie.

Nie rozumiem,mam usunąć kolumnę ID? Wcześniej (dopóki nie dodałem ID w bazie danych) wszystko działało,dodawanie, oraz "odzyskiwanie" danych.

0
Eman napisał(a):
Ktos napisał(a):

Wyszczególnij kolumny, pomijając id, wtedy pójdzie.

Nie rozumiem,mam usunąć kolumnę ID? Wcześniej (dopóki nie dodałem ID w bazie danych) wszystko działało,dodawanie, oraz "odzyskiwanie" danych.

Własnie, nie rozumiesz :(
Masz napisać tak:

INSERT INTO CATS(name, race , gender, coat_color,age) VALUES ('abc','abc','abc','abc',1);
0

Wybacz,ale jaki jest sens wstawiania z góry zadeklarowanej wartości "('abc','abc','abc','abc',1);" skoro ta baza ma być podpięta do GUI,następnie dane które zostaną wprowadzone do TextFieldow powinny lądować w bazie? Chodzi mi tylko o to,żeby przy "odzyskiwaniu" kotów z bazy danych,przy każdym kocie powinno być id,żebym mógł poźniej ewentualnie edytować dane oraz je zapisać. Jeżeli tłumaczę to niezrozumiale to przepraszam. Myślałem że do edycji kota (przypuśćmy że któreś z pół zostało źle wprowadzone,przykładowo rasa - pers,zamiast dachowiec) potrzebne jest id,żeby potem wszystko zapisać.

0
Eman napisał(a):

Wybacz,ale jaki jest sens wstawiania z góry zadeklarowanej wartości "('abc','abc','abc','abc',1);" skoro ta baza ma być podpięta do GUI,

Nie chce mi czytać dalej tych głupot.
Dostałeś przykład z parametrami, ale jak widać nie zrozumiałeś.
Zatem pokmiń sam jak to zrobić..

1 użytkowników online, w tym zalogowanych: 0, gości: 1