Java + MySQL

0

Witam,

Otóz mam nastepujacy problem w połączeniu miedzy aplikacja Javowa a MySQL. Skonfigurowalem sobie baze danych, polaczenie i samo polaczenie dziala dobrze. Jednak kiedy z poziomu aplikacji probuje dodac rekord do tabelki w bazie danych to on sie nie dodaje. Kod aplikacji odpowiadajacy za dodanie rekordu:

String s1 = pole1.getText().trim();
		String s2 = pole2.getText().trim();
		String s3 = pole3.getText().trim();
		String polecenie = "insert into Zlecenie(ID, nazwiskoKlienta, modelAuta) values(,"+s1+"','"+s2+"','"+s3+"')";
		try{
			st.executeUpdate(polecenie);
			st.close();
		}
		catch(Exception ek){}
		wiadomosc.setText("Zlecenie przyjete!");
		pole1.setBackground(Color.yellow);
		pole2.setBackground(Color.yellow);
		pole3.setBackground(Color.yellow);
		validate();

Reszta to konfiguracja okien itp, jeśli trzeba to powiedzcie - tez wkleje.

0

Podaj wyjatek.
Na pierwszy rzut oka zle wygladaja wartosci w nawiasie - zaczynasz od przecinka przed pierwsza wartoscia.

0

Wyglada na to, ze to cos z połączeniem jednak. Sprobowalem ustawic na sztywno dane do wstawienia i nadal nic. Polaczenie tworze tutaj:

public void polacz(){
	try{
		Class.forName("com.mysql.jdbc.Driver");
		Connection pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/Warsztat", "Bartek","lewatywa");
		Statement st = pol.createStatement();
		System.out.println("ALL OK!");
	}
	catch(Exception ek){
		System.out.println("Nie działa");
	}
}

Mimo tego, że wyświetla mi "ALL OK" to chyba jednak cos jest nietak.

0

A probowalem tez wstawiac poniższym poleceniem:
st.executeUpdate("insert into Zlecenie values(567,'Kowalski','fore')");

Gdzie moge znalezc ten wyjatek? W Eclipsie mi zadnego nie pokazuje - wyglada tak, jakby wszystko bylo dobrze. Ale przy select w bazie nie ma zadnych zmian w tabeli.

0

Co z tego jak się łączysz jak referencje do zasobów przechowujesz tylko w lokalnych zmiennych....

A wyjątku nie masz bo go nawet nie przechwytujesz tylko wyciszasz....

Poszukaj na forum tematów użytkownika @misty, w jednym z nich @koziolek pokazał przykładową klasę do zarządzania połączeniem bazą danych, w Twoim przypadku będzie pomocna.

0
try {   
   st.executeUpdate("insert into Zlecenie values(567,'Kowalski','fore')");
}catch( Exception e ) {  e.printStackTrace(); } 

okrec trajem i zobacz :)

a tak à propos numerek sam Ci sie dopisze jesli go nie podasz :) wtedy masz automatyczna inkrementacje

0

Wywala mi komunikat:

java.lang.NullPointerException
	at baza.Baza$Panel.actionPerformed(Baza.java:72)

Linia 72 to jest:

st.executeUpdate(polecenie);

caly actionPerformed:

public void actionPerformed(ActionEvent ae){
		polacz();
		String s1 = pole1.getText().trim();
		String s2 = pole2.getText().trim();
		String s3 = pole3.getText().trim();
	
		String polecenie = "insert into Zlecenie(ID, nazwiskoKlienta, modelAuta) values(567,'Kowalski','ford');";
		try{
			st.executeUpdate(polecenie);
			st.close();
		}
		catch(Exception ek){
			System.out.println("nic z tego nie bedzie");
			ek.printStackTrace();
		
		}
		wiadomosc.setText("Zlecenie przyjete!");
		pole1.setBackground(Color.yellow);
		pole2.setBackground(Color.yellow);
		pole3.setBackground(Color.yellow);
		validate();
	}
0

wyglada na to ze st jest nullem

0

W podanym wierszu nullem może być tylko st. Zmienna st, którą tworzysz w funkcji polacz() jest w wierszu 72 nieznana, skoro Ci się kompiluje, tzn. że masz pole st typu Statement, (a ono ma wartość null). Zmień funkcję polacz

public void polacz(){
        try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/Warsztat", "Bartek","lewatywa");
                st = pol.createStatement();
                System.out.println("ALL OK!");
        }
        catch(Exception ek){
                System.out.println("Nie działa");
        }
}

Jeżeli masz w klasie pole pol, to zrób jeszcze jedną zmianę

  pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/Warsztat", "Bartek","lewatywa");
0

Tak, tez do tego doszedlem. Tylko nie rozumiem dlaczego. Metoda polacz() wyglada tak:

public void polacz(){
	try{
		Class.forName("com.mysql.jdbc.Driver");
		Connection pol = DriverManager.getConnection("jdbc:mysql://localhost:3306/Warsztat", "root","trampek");
		Statement st = pol.createStatement();
		System.out.println("ALL OK!");
	}
	catch(Exception ek){
		System.out.println("Nie działa");
	}
}

A metoda polacz() jest wywoływana w klasie Panel, która jest podklasą klasy Baza. W tej samej klasie (Panel) jest przeprowadza reszta akcji, związana z wprowadzeniem rekordu do bazy, wiec nawet nie wiem czy, i przede wszystkim jak, moge jeszcze przekazac wartośc tego, zeby działało

0

@ bo - dopiero teraz doczytalem posta Twojego, juz sprawdzma czy dziala

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