Java, MySQL. Drobny problem przy insercie

Java, MySQL. Drobny problem przy insercie
PT
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 7 lat
  • Postów:6
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.

Kopiuj

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:

Kopiuj
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)

edytowany 2x, ostatnio: PirxTheStaticVoid
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
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

edytowany 1x, ostatnio: Pinek
TP
  • Rejestracja:około 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:21
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.