Poprzedni program łączył się z bazą i wypisywał wyniki zapytań.
Ten będzie dodawał dane do bazy zapytaniem INSERT. Trzy rodzaje zapytania (INSERT, DELETE i UPDATE) wymagają uruchomiania executeUpdate() zamiast executeQuery()
Scanner podłączony do System.in czyta dane z klawiatury, delimiter to rodzaj separatora między zmiennymi.
Zapytanie SQL jest preparowane – tj. bezpieczne na próby wstrzyknięcia kodu (SQL Injection). Niestety wydłuża to kod przez przymus użycia ciągu funkcji setString() dla każdego parametru (?) zapytania SQL.
insertSQL.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 28 29 | import java.sql.*; import java.util.Scanner; public class insertSQL { public static void main(String[] args) throws ClassNotFoundException,SQLException { String imie, nazwisko, pesel, adres; Scanner in = new Scanner(System.in); in.useDelimiter(System.getProperty("line.separator")); //ustawienie separatora między wprowadzanymi danymi - ENTER System.out.println("Podaj w osobnych liniach kolejno: pesel imię nazwisko adres: "); pesel = in.next(); imie = in.next(); nazwisko = in.next(); adres = in.next(); //kilka slow ////////// baza SQL: Class.forName("com.mysql.jdbc.Driver"); //zaladuj sterownik MySQL Connection SQL = DriverManager.getConnection("jdbc:mysql://localhost/baza" , "user", "haslo" ); PreparedStatement zapytanie = SQL.prepareStatement("INSERT INTO klient VALUES( ?, ?, ?, ? );"); zapytanie.setString(1, pesel); zapytanie.setString(2, imie); zapytanie.setString(3, nazwisko); zapytanie.setString(4, adres); zapytanie.executeUpdate(); zapytanie.close(); SQL.close(); } } |