TableNames
są identyfikatorami, więc nie powinny być cytowane pojedynczymi cudzysłowami. Ponieważ użyta nazwa tableName nie jest zarezerwowanym słowem kluczowym, możesz po prostu usunąć otaczające cudzysłowy,
INSERT INTO student (FirstName, LastName....
Kiedy umieszczasz coś w pojedynczych cudzysłowach, wymusza to, aby ten obiekt stał się literałem ciągu. Więc kiedy identyfikatory są otoczone pojedynczymi cudzysłowami, oznacza to, że nie są już identyfikatorami.
Serwer zgłasza wyjątek, ponieważ INSERT INTO
oczekuje identyfikatora, a nie literału łańcuchowego.
Gdy przypadkowo użyłeś nazwy tabeli, która jest MySQL Reserved Słowo kluczowe
, nie używaj pojedynczego cudzysłowu do odgraniczenia identyfikatora, ale z backticks
.
Na marginesie, zapytanie jest podatne na SQL Injection
jeśli wartość (s ) zmiennych pochodziło z zewnątrz. Zapoznaj się z poniższym artykułem, aby dowiedzieć się, jak temu zapobiec. Używając PreparedStatements
możesz pozbyć się pojedynczych cudzysłowów wokół wartości.