SQLite Insert - unable to cast object of type

0

Witajcie,

Mam problem z programem i nie za bardzo wiem jak dalej to pociagnac. Exception wywala o command.Parameters.Add

int new_id = check_last_id(connection)+1;
SQLiteCommand command = new SQLiteCommand("INSERT INTO tracking values (?,?,?,?,?,?,?,?,?,?,?,?,?)", connection);
command.Parameters.Add(new_id); //linia 72
command.Parameters.Add(this.observator_id);
command.Parameters.Add(this.staff_id);
command.Parameters.Add(this.tid);
command.Parameters.Add(this.pid);
command.Parameters.Add(this.sample_size);
command.Parameters.Add(this.post_tracking);
command.Parameters.Add(this.date_time);
command.Parameters.Add(this.observations);
command.Parameters.Add(this.actions);
command.Parameters.Add(this.activity);
command.Parameters.Add(this.stage);
command.Parameters.Add(this.result);
command.Prepare();
command.ExecuteNonQuery();
connection.Close();

wywala z bledem:
System.InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.Data.SQLite.SQLiteParameter'.
at System.Data.SQLite.SQLiteParameterCollection.Add(Object value)
at HMPO_Employee_Tracker.main_window_form.upload_to_db() in C:\Users\Maciej\source\repos\HMPO Employee Tracker\Form1.cs:line 72

Probowalem to puscic rowniez jako string i takze nie dziala. Wszystkie pozostale zmienne sa stringami.

Tabela bazy danych wyglada nastepujaco:

var query = "CREATE TABLE tracking(" +
                "id int NOT NULL UNIQUE PRIMARY KEY," +
                "observator_id varchar(20) NOT NULL," +
                "staff_id varchar(20) NOT NULL," +
                "tid varchar(20)," +
                "pid varchar(20)," +
                "sample_size varchar(30) NOT NULL," +
                "post_tracking varchar(20)," +
                "date_time DATETIME NOT NULL," +
                "observations TEXT NOT NULL," +
                "actions TEXT," +
                "activity varchar(20)," +
                "stage varchar(20)," +
                "result varchar(10))";

DB.PNG

Bardzo prosze o jakas wskazowke.

1

Muszę przyznać że nie widziałem jeszcze podawania parametrów z placeholderami jako ? poza PHP

Wydaje mi się że powinieneś spróbować użyć metody tej, w ten sposób command.Parameters.AddWithValue("Id", new_id)

i zamist (?,?,?,?,?,?,?,?,?,?,?,?,?) to np. (@Id,?,?,?,?,?,?,?,?,?,?,?,?) i analogicznie z całą resztą.

0

dzieki - teraz dziala :)

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