Java, MySQL. Drobny problem przy insercie

0

Cześć!

Mam małe GUI w javie, za pomocą którego użytkownik może wprowadzić 5 wartości, które po naciśnięciu buttona zostaną zapisane, jako rekord w tabeli bazy mysql.
Jedno z pól ("komentarz") jest opcjonalne i z nim mam mały problem.


if (fieldKomentarz.getText().equals(""))
			{
				stringKomentarz = "null";
			}
			else
			{
				System.out.println(fieldKomentarz.getText());
				stringKomentarz = fieldKomentarz.getText();
			}

Zastosowałem ifa, aby przy braku wprowadzonej wartości w polu komentarz pod zmienną podstawił się null, bo dalej jest:

sql = "insert into main (data,kwota,rodzaj_id,osoba_id,komentarz) values (str_to_date('"+stringData+"','%Y-%m-%d'),"+stringKwota+","+intRodzaj+","+intOsoba+","+stringKomentarz+");";
stmt.executeUpdate(sql);

Jeżeli w polu komentarz nie pojawi się żadna wartość, do bazy zostanie zaczytany prawidłowy rekord z nullem na końcu.
Jeżeli w polu komentarz pojawi się liczba, zostanie zaczytane prawidłowo.
Problem pojawia się, gdy w komentarzu pojawi się tekst.

Co robię źle?
Schemat tabeli w załączeniu.
title

Z góry dziękuję za pomoc i uwagi.
Pozdrawiam!

edit: Przepraszam! Jeszcze błąd: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'fg' in 'field list'
(wprowadzono znaki fg)

1

Podejrzyj w debugu stringa którego tworzysz (to sql-owe zapytanie). Zobaczysz, twoje "fg" będzie po przecinku, ale bez cudzysłowiów. Musisz dodać przed i po tej zmiennej np \'. Pomijam fakt, że oczy bolą jak patrzą na ten kod :D

1

O Prepared Statement proponuję poczytać, np tutaj.Nie powinieneś stosować konkatenacji podczas tworzenia zapytania sql

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