Wstawienie rekordów do bazy z poziomu Javy

0

Hej,

Mam problem ze wstawieniem danych do bazy. Poniżej wstawiam metodę, której używam do wstawienia rekordów.

public static boolean insertRecord(String name, String address, String phone, String nip, String mail) {
        String questionContent = "INSERT INTO Firma VALUES (NULL, ?,?,?,?,?);";
        try {
            PreparedStatement preparedStatement = service.getConnection().prepareStatement(questionContent);
            preparedStatement.setString(1, name); // numery dotyczą znaków zapytania
            preparedStatement.setString(2, address);
            preparedStatement.setString(3, phone);
            preparedStatement.setString(4, nip);
            preparedStatement.setString(5, mail);
            preparedStatement.execute();
            System.out.println("Dodano rekord");
        } catch (SQLException e) {
            System.err.println("Nie udało się dodać danych do bazy");
            e.printStackTrace();
            return false;
        }
        return true;
    }

Tabela w bazie danych automatycznie wypełnia id dlatego w zapytaniu SQL jest wartość NULL.

Pod przycisk dodający rekord mam następujący kod:

@FXML
    void saveCompanyData() {
        String name = nameTextField.getText();
        String address = addressTextField.getText();
        String phone = phoneTextField.getText();
        String nip = nipTextField.getText();
        String mail = mailTextField.getText();
        AddCompanyPaneUtils.insertRecord(name,address,phone,nip,mail);
    }

Wyskakuje mi błąd "com.microsoft.sqlserver.jdbc.SQLServerException: An explicit value for the identity column in table 'Firma' can only be specified when a column list is used and IDENTITY_INSERT is ON."

Macie jakieś propozycje na rozwiązanie? Z góry dziękuję za pomoc.

3

A czego nie rozumiesz w komunikacie błędu? o_O Próbujesz wpisać wartość NULL jako 1 pole (pewnie ID) w bazie i baza mówi ze nie wolno ci ustawić wartości tego pola bo to identity i żeby móc to zrobić musiałbyś zmienić ustawienie bazy.
Oczywiście w ogóle nie to chcesz zrobić -> powinieneś po ludzku w zapytaniu sqlowym wypisać które kolumny ustawiasz a nie robić taki cyrk gdzie nie wiadomo co ustawiasz, bo jeszcze masz tam same ?. Ciekawe ile razy sprawdzałeś czy kolejność ci się zgadza :D

INSERT INTO Firma (ala, ma, kota, a, sierotka, ma, rysia) VALUES (?,?,?,?,?);

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