Cudzysłowy w stringu SQL

0

Witam. Chcę dodać do tabeli w bazie danych wartości zmiennych znajdujących się w tekstboxach. Kod:

sql_cmd.CommandText ="INSERT INTO Towary(nazwa,kod_kreskowy,jednostka) VALUES ("+                   textBox1form2.Text,textBox2form2.Text,textBox3form2.Text+";";
SQLiteDataReader wynik = sql_cmd.ExecuteReader();

W zapytaniu SQL dodawane dane muszę być w apostroach. Jednak kiedy dodam apostrofy to nie traktuje mi zmiennych z tekstem jako zmiennych tylko jako zwykly tekst. Jak to zrobić, żeby do zapytania przekazywał mi zmienną z apostrofami?

dodanie znacznika <code class="csharp"> - @furious programming

0

ok, dodałem @ przed zmiennymi, czyli teraz traktuje mi je jako zmienne. teraz tylko jak zrobić, żeby do zapytania szły też cudzysłowy?

1

Jakie cudzysłowy? Jeśli zrobiłeś to z parametrami to nie trzeba cudzysłowów.
Pokaż jak to masz zrobione.

0

BTW to twoje pierwotne rozwiązanie kończy się problemami SQL Injection, więc lepiej dobrze zrozum jakie rozwiązanie ci dają.

0

Mam tak zrobione:

sql_cmd.CommandText ="INSERT INTO Towary(nazwa,kod_kreskowy,jednostka) VALUES (@textBox1form2.Text,@textBox2form2.Text,@textBox3form2.Text)"; 

Daje taki komunikat:

An unhandled exception of type 'System.Data.SQLite.SQLiteException' occurred in System.Data.SQLite.dll

Additional information: SQL logic error or missing database

near ".": syntax error

dodanie znacznika <code> dla treści błędów - @furious programming

2
sql_cmd.CommandText = "INSERT INTO Towary(nazwa,kod_kreskowy,jednostka) VALUES (@nazwa, @kod, @jednostka)";
sql_cmd.CommandType = CommandType.Text;
sql_cmd.Parameters.Add(new SQLiteParameter("@nazwa", textBox1form2.Text));
sql_cmd.Parameters.Add(new SQLiteParameter("@kod", textBox2form2.Text));
sql_cmd.Parameters.Add(new SQLiteParameter("@jednostka", textBox3form2.Text));

Następnym razem zanim bezmyślnie skopiujesz kod poświęć chwilę na zrozumienie go.

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