[c#, WPF, SQLite] Dodawanie danych do bazy

0

Witam. Ostatnio zacząłem się bawić SQLite w c# (WPF). Czego się dowiedziałem to to, że zapytania w SQLite są takie same jak w MySQL.

Problem pojawił się, gdy chciałem dodać dane do tabeli takim sposobem:```

INSERT INTO nazwa_tabeli (nazwa_pola1, nazwa_pola2, nazwa_pola3) VALUES (wartosc_pola1, wartosc_pola2, wartosc_pola3)

Jednak to nic nie daje... (Odczyt i zapis działa prawidłowo)
Mój kod wygląda tak:

//Wcześniej zdefiniowane wszystkie zmienne
db_querry = "INSERT INTO Users (Id,Name,Age) VALUES (" + id + "," + name + "," + age + ")"; //Zapytanie
db_command.ExecuteNonQuery(); //wykonanie zapytania
0

name jest pewnie varchar (text) więc musi być w uszach '

0

Już kiedys byl ten problem wiec pozwole sobie skopiować własna porade ;)

Uczysz się-> to dobrze, spoko ale...
Nigdy nie wprowadzaj parametrów na sile i bezpośrednio w treść zapytania. Żadnej Walidacji !
Widziałem apki komercyjne (za dziatki tysięcy zloty) gdzie w querry jest np: textbox2.Text D

Jeżeli chcesz by aplikacja wykazawala minimum odporności na błędy i bezpieczeństwo, parametry wprowadzaj
poprzez SqlCommand.Parameters.
Np:
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

Nie wiem w ogóle czy bez takiego podejścia można wprowadzić nulla do instert'a (chcąc by określona kolumna miała wartość pusta);
Być może się da, nie wiem.
<

Tylko tak wprowadzaj dane do zapytania/polecenia jeżeli nie chcesz mieć kłopotów

Pozdrawiam.

0

@abrakadaber:

//zmienne zdefiniowane wcześniej
db_connect = new SQLiteConnection("Data Source =" + path + ";Version=3;");
db_connect.Open();
db_command = new SQLiteCommand(db_querry, db_connect);
db_querry = "INSERT INTO Users (Id,Name,Age) VALUES (" + id + ",\"" + name + "\"," + age + ")";
db_command.ExecuteNonQuery(); //wykonanie zapytania

Generalnie przetestowałem zapytanie do SQL'a i z niem jest wszystko dobrze

0

Zamień na coś takiego:

db_querry = "INSERT INTO Users (Id,Name,Age) VALUES ('" + id + "','" + name + "','" + age + "')";

Ale masz jeszcze jeden błąd
linkija "db_querry=..." powinno być nad "db_command = new SqlLiteCommand...."

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