Jak wyświetlić dane w JComboBox z bazy danych

0

Witam,
Pewnie dość zaskakujący temat,ale nie wiem jak utowrzyć w Javie połączenie z bazą danych tak abym mógł za pomocą SELECT'a podpiąć dane z bazy danych do JComboBox.
Czytałem na 4programmers.net na ten tamat ale coś mi nie wychodzi...
Oto mój blok kodu:
try
{
Class.forName("org.firebirdsql.jdbc.FBDriver");
}
catch (ClassNotFoundException cnfe)
{
cnfe.printStackTrace();
}
try
{
Connection conn = DriverManager.getConnection("jdbc//localhost:3050/E:/Projekty Java/Agro Studio/Agro Bydlo/engine/engine.fdb", "sysdba", "masterkey");
String query = "SELECT NAME from TEST";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
{
String Nazwa = rs.getString("NAME");
System.out.println("Nazwa użytkownika " + Nazwa);}
}
catch (SQLException se)
{
se.printStackTrace();
}

0

Co dokładanie nie działa? Czy poleciał jakiś wyjątek czy też nie wiesz jak przełożyć otrzymane rezultaty na JComboBox?

0

nie wiem jak otrzymać rezultaty w JComboBox z bazy danych

0

Teraz już jasne :)

JComboBox ma metodę addItem(Object obj). Wystarczy zatem taki kod:

JComboBox jcb = new JComboBox();
while (rs.next())    {
      String nazwa = rs.getString("NAME");
      jcb.addItem(nazwa);
}

Jeżeli jednak chcesz łączyć z wybranym elementem jakąś akcje może warto zdefiniować klasę której obiekty będziesz dodawał do listy. Możesz wtedy przeładować metodę toString() aby zwracała to co ma być wypisane jako nazwa pola.

0

Dzięki za pomoc
Widze że się orientujesz w tych sprawach a więc mam jeszcze pytanie:

Robię program, który jak widać będzie opierał się na bazie danych i teraz chyba bezsensu jest podawanie twardej lolalizacji bazy danych...To nie można zrobić url do db w odzielnym pliku tak aby za pomocą instalator można w łatwy sposób to skonfigurować ?

0

Poczytaj o obiekcie i plikach Properties. Generalnie działa to na zasadzie definiowania w pliku w osobnych rekordach konstrukcji klucz=wartość możesz więc zdefiniować tam parametry połączenia. Jednak musisz pamiętać iż to sa zwykłe pliki tekstowe, należy je więc troszkę zaszyfrować.

0

Nic mi nie wychodzi :-[
W JComboBox są standardowe Item'y a jak wybiorę jeden z nich to otrzymuję:
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)

0

A to teraz wiadomo :) Nie może znaleźć drivera do bazy danych.
Spróbuj zarejestrować sterownik w systemie:

Class.forName(driverName);
System.setProperty("jdbc.driver", "org.firebirdsql.jdbc.FBDriver"); 

poza tym należy dodać jara z klasą sterownika do patha systemowego.

0
  1. jesli piszesz w jakimś sensownym IDE (eclipse, netbeans) to dołączasz dobie jar'a ze sterownikiem do projektu i już.

później tworzysz sobie jakąś metodkę, np.

 void wczytajSterownik(){		
		try { 
			Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
			JOptionPane.showMessageDialog(null,"Poprawnie zaladowano sterownik...","Info...",JOptionPane.INFORMATION_MESSAGE);
		}catch (Exception E){
			System.err.println("Unable to load driver.");
			JOptionPane.showMessageDialog(null,"Unable to load driver.","Info...",JOptionPane.INFORMATION_MESSAGE);
			E.printStackTrace(); }
		}

która wczyta Ci sterownik

  1. łączysz się z bazą
String  wywolanie="jdbc:firebirdsql:localhost:"+adresBazy; //adresBazy taki jaki masz, ja sobie  wybierałem plik z JFileChooser'a
Connection  polaczenie = DriverManager.getConnection(wywolanie,"SYSDBA", "masterkey");
  1. wykonusz zapytanie i umieszczasz wyniki w JComboBox:
JComboBox auta=new JComboBox();
	Statement zapytanie=polaczenie.createStatement();		
		try {
			String query="select popis from pojazdy where ptel in"+
							"(select distinct ttel from tank)";
			ResultSet wynik=zapytanie.executeQuery(query);
		while(wynik.next()) {
			auta.addItem(wynik.getString("Nazwa_Kolumny"));
			
		}
		 zapytanie.close();
		}catch(SQLException x) {System.out.println("wyjatek - wczytajAuta()");}
		

i juz...

pzdr.

0

No to piszę w netbeans (bo w eclipse nie umiem sobie skonfigurować środowiska GUI - tak na marginesie jak kogoś z użytkowników zastanawiałoby czemu akurat w netbeans) no i mój ciąg dalszy zmagań to robię tak napisaliście. Dodałem do Libraries cały plik z sterownikiem o nazwie .jar i teraz przeanalizowałem jeszcze raz kod próbuję i jest to samo z tym, że teraz mam błąd o nazwie:

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544344. I/O error for file %.0s"CreateFile (open)"
null
Error while trying to open file
null
Reason: I/O error for file %.0s"CreateFile (open)"
null
Error while trying to open file
null
at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:122)
at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:131)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)

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