SHARE
TWEET

Untitled

a guest Feb 4th, 2016 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package pl.edu.agh.db;
  2.  
  3. import java.sql.*;
  4. import java.util.Random;
  5.  
  6. /**
  7.  * Created by Przemek on 04.02.2016.
  8.  */
  9. public class DBConnection {
  10.     private Connection connection;
  11.  
  12.  
  13.     public DBConnection() {
  14.  
  15.         initConnection();
  16. //        newUser("przemo","homer303");
  17.         userAuth("przemo", "homer303");
  18.  
  19.     }
  20.  
  21.  
  22.     protected void initConnection() {
  23.         try {
  24.             //nawiązanie połączenia z bazą danych
  25.             connection = DriverManager.getConnection("jdbc:mysql://localhost/javaftp", "javaftp", "admin");
  26.             //na podstawie obiektu connection utworzenie obiektu statement
  27.             Statement stmt = connection.createStatement();
  28.             //wykonanie zapytania na bazie danych, w wyniku którego uzyskujemy
  29.             //dostęp do struktury danych przechowującej wynik
  30.             try (ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
  31.                 //przeglądnięcie obiektu typu ResultSet element po elemencie
  32.                 while (rs.next()) {
  33.                     //Wybranie pierwszej kolumny w postaci Stringa
  34.                     System.out.println(rs.getString(1) + rs.getString(2));
  35.                 }
  36.             }
  37.             //przetworzenie potencjalnych błędów związanych np. z połączeniem
  38.         } catch (SQLException ex) {
  39.             // handle any errors
  40.             System.out.println("SQLException: " + ex.getMessage());
  41.             System.out.println("SQLState: " + ex.getSQLState());
  42.             System.out.println("VendorError: " + ex.getErrorCode());
  43.         } catch (Exception e) {
  44.             e.printStackTrace();
  45.         }
  46.  
  47.     }
  48.  
  49.     public boolean ifUserExists(String login) throws SQLException{
  50.         String query = "SELECT `username` ILOSC FROM `users` WHERE `username`=?";
  51.         PreparedStatement ps = connection.prepareStatement(query);
  52.         ps.setString(1, login);
  53.         ResultSet rs = ps.executeQuery();
  54.         if(rs.next()) {
  55.             return true;
  56.         }
  57.         return false;
  58.     }
  59.  
  60.     public boolean newUser(String login, String passwd){
  61.  
  62.         try {
  63.             if(!ifUserExists(login)) {
  64.                 Random generator = new Random();
  65.                 Integer salt = generator.nextInt(9999) + 1;
  66.                 String query = "INSERT INTO `users`(`username`, `password`, `salt`) VALUES (?,PASSWORD(CONCAT(PASSWORD(?),?)),?)";
  67.                 PreparedStatement ps = connection.prepareStatement(query);
  68.                 ps.setString(1, login);
  69.                 ps.setString(2, passwd);
  70.                 ps.setString(3, salt.toString());
  71.                 ps.setString(4, salt.toString());
  72.                 System.out.println(ps.executeUpdate());
  73.             }
  74.         } catch (SQLException e) {
  75.             e.printStackTrace();
  76.         }
  77.         return true;
  78.     }
  79.     public boolean userAuth(String login, String passwd) {
  80.         try{
  81.  
  82.             String query = "SELECT `password`=PASSWORD(CONCAT(PASSWORD(?),`salt`)) FROM `users` WHERE `username`=?";
  83.             PreparedStatement ps = connection.prepareStatement(query);
  84.             ps.setString(1, passwd);
  85.             ps.setString(2, login);
  86.             ResultSet rs = ps.executeQuery();
  87.             return rs.next();
  88.  
  89.  
  90.         } catch(SQLException e){
  91.             e.printStackTrace();
  92.         }
  93.         return false;
  94.     }
  95.  
  96. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top