W części pierwszej zrobiliśmy program wypisujący komunikat poleceniem System.out.println.
Teraz coś dla znających MySQL: program łączy się z bazą i wypisuje wyniki zapytania SQL, napisany w Debianie. Należy podmienić:
uzytkownik, haslo, baza (host ewentualnie, tu localhost)
zapytanie.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.sql.*; public class zapytanie { public static void main(String[] args) throws ClassNotFoundException,SQLException { //Połącz z bazą MySQL: Class.forName("com.mysql.jdbc.Driver"); //zaladuj sterownik MySQL Connection SQL = DriverManager.getConnection("jdbc:mysql://localhost/baza", "uzytkownik", "haslo"); //Zapytanie SELECT.... Statement zapytanie = SQL.createStatement(); ResultSet tabela = zapytanie.executeQuery("SELECT * FROM klient"); while (tabela.next()) //czyta tabelę wiersz po wierszu, jak zwykle w takich programach { String imie = tabela.getString("imie"); //"imie" to nazwa kolumny SQL String nazwisko = tabela.getString("nazwisko"); //kolumna nazwisko też typu String tj. VARCHAR int pesel = tabela.getInt("pesel"); //kolumna typu INT, są też inne typy System.out.println(imie + " " + nazwisko + " PESEL:" + pesel); } zapytanie.close(); SQL.close(); } } |
Kompilacja:
1 | javac zapytanie.java |
Uruchomienie (warto zrobić osobny plik run z uprawnieniami uruchomienia chmod a+x ./run )
1 | java -classpath .:/usr/share/java/mysql.jar zapytanie |
Wersja z przygotowaniem zapytania
Ten sam program w wersji już z przygotowaniem zapytania SQL (obrona przed SQL Injection – tu niekonieczna, dlatego wersja 1 jest dobra).
zapytanie.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.sql.*; public class zapytanie { public static void main(String[] args) throws ClassNotFoundException,SQLException { Class.forName("com.mysql.jdbc.Driver"); //zaladuj sterownik MySQL Connection SQL = DriverManager.getConnection("jdbc:mysql://localhost/baza" , "uzytkownik", "haslo" ); PreparedStatement zapytanie = SQL.prepareStatement("SELECT * FROM klient"); ResultSet tabela = zapytanie.executeQuery(); while (tabela.next()) { String imie = tabela.getString("imie"); //"imie" to nazwa kolumny SQL String nazwisko = tabela.getString("nazwisko"); int pesel = tabela.getInt("pesel"); System.out.println(imie + " " + nazwisko + " - " + pesel); } zapytanie.close(); SQL.close(); } } |