Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] JDBC czyli MySQL w Javie.


Rekomendowane odpowiedzi

Opublikowano

Witam ! Z racji tego, że trzeba pod forum javy rozkręcić, postanowiłem napisać tutorial dotyczący jdbc. Mysql jest bardzo przydatne, ja osobiście, wole go od yaml, czy xml.

Dobra to co do dzieła !

 

Najpierw omówmy sobie jak wygląda połączenie się do bazy danych. Jest ono trochę inne niż np w php - bo tutaj adres i bazę danych podajemy w "linku".

jdbc:mysql://localhost:3306/baza_danych

Tak wygląda przykładowy link. Adres Hostu podajemy razem z portem (standardowo 3306), potem po "/" podajemy nazwę bazy danych. Ważne jest to, że nie używamy spacji.

Do połączenia będzie nam również potrzebna nazwa użytkownika i hasło.

 

Gdy to wszystko mamy, możemy wziąć się za stworzenie połączenia. Wygląda to mniej więcej tak :

 

    private final String url      = "jdbc:mysql://localhost:3306/baza_danych";
    private final String user     = "root";
    private final String password = "password";
    Connection conn = DriverManager.getConnection(url, user, password);

W tym momencie powinniśmy się połączyć z bazą danych, oczywiście o ile wpisaliśmy prawidłowe pasy.

 

Kolejną rzeczą, jest wyciąganie danych z mysql, sprawa jest dość prosta. Do tego użyjemy klasy ResultSet oraz Statement.

Statement stat = conn.createStatement();

Tworzymy nowy Statement, dzięki któremu, będziemy mogli wysyłać zapytania do bazy danych.

 

Następnie aby zrobić coś z danymi które otrzymamy musimy użyć ResultSet.

 

ResultSet res = statement.executeQuery("Zapytanie SQL");

W tym momencie w zmiennej "res" mamy wszystkie dane które wyciągnęliśmy - no ale chcemy np uzyskać daną komórkę.

res.getString("Nazwa_Komórki");

W ten sposób wyciągamy daną komórkę. Dobra aby przejść do kolejnej linijki w naszej tabeli musimy użyć.

 

res.next()

Zwraca ona wartość boolean, czyli jeżeli nie ma kolejnej linijki, wtedy ma wartość FALSE, a jeżeli jest TRUE.

 

Dobra - wyciąganie mamy za sobą, teraz trzeba coś wpisać, co nie ?

 

Tutaj w ogólnie nie będzie nam potrzebne ResultSet.

 

stat.executeUpdate("Zapytanie_SQL");

executeUpdate różni się tym od executeQuery, że w Update wpisujemy coś, lub usuwamy - a w executeQuery, tylko wyciągamy.

 

Do by było na tyle, poradnik będę aktualizować, dodam ważną część o zamykaniu połączeń, bo bez tego możemy przeciążyć mysql i będziemy dostawać errory. Jeżeli popełniłem jakieś błędy w kodzie, ortograficzne itp piszcie w komentarzach. Z góry przepraszam za interpunkcję i estetykę ;]

//gif w sygnie

Opublikowano

Za +- tydzień napiszę o SQlite, chociaż nie używam i nie przepadam za nim.

//gif w sygnie

  • 2 tygodnie później...
Opublikowano

Poradnik niestety niezbyt dobry. Dobry poradnik powinien tlumaczyc jak cos dziala, nie tylko dawac gotowy kod. Do tego sposobow wywolan polecen sql po stronie bazy jest sporo, nie istnieje tylko zwykly Statement, ktorego sie raczej nie uzywa, najwyzej do samego laczenia. Do tego napisac cos o createStatement a prepareStatement. Do czego sluza commity i rollbacki. Czemu zazwyczaj lepiej jest uzywac PreparedStatement niz zwyklego Statement i wiele innych informacji, ktore powinny sie znalezc w poradniku z podstaw.

Opublikowano

Yyyy powiedzcie mi jedną rzecz, jak można "nie lubić" SQLite ?! WTF ?

 

MySQL przydaje się gdy mamy bazę danych i ogarniętego użytkownika.

SQLite przydaje się gdy mamy niezapisywać za dużo i nie wymaga żadnej konfiguracji.

 

Więc jedno do jednego, drugie do drugiego. Nie da się nie lubić. UWAGA! Nawet język jest ten sam! SQL !

Opublikowano

Ja też wole używać, mysql - wiem, że takie samo api, ale może kwestia przyzwyczajenia, może też dlatego, że dużo pluginów robiłem na mysql aby podpiąć pod stronkę, jakiś ranking itp.

//gif w sygnie

Opublikowano

mam pytanie i chciał bym zrobić rejestracje i pojawia się pytanie jak ja mam zapisać dane z rejestracji np. hasło, login i email w bazie danych ?

Opublikowano

mam pytanie i chciał bym zrobić rejestracje i pojawia się pytanie jak ja mam zapisać dane z rejestracji np. hasło, login i email w bazie danych ?

Tworzysz nową tabelę np. Users, dajesz tam komórki id,login,haslo,mail a potem tylko wysyłasz zapytania. Jak to zrobić? Google "mysql tutoriall" lub "mysql zapytania"

Opublikowano

Tworzysz nową tabelę np. Users, dajesz tam komórki id,login,haslo,mail a potem tylko wysyłasz zapytania. Jak to zrobić? Google "mysql tutoriall" lub "mysql zapytania"

Tak trudno ci podać jedną komendę bo mam już napisane takie coś :



import java.sql.*;
import java.util.Scanner;

public class test {
  private static Scanner wejsciowe;
 private String ptytul;
private String url, userName, password;
public static void main (String[] args) {
    Connection c = null;
   ;
    
    
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      c=DriverManager.getConnection(
        "jdbc:mysql://localhost/tesy","root", "niedziela");
      System.out.println ("Udało się połączyć z bazą danych...");
    } catch (ClassNotFoundException e) {
      System.out.println ("Problem z driverem bazy danych...");
    } catch (SQLException e) {
        System.out.println ("Nie można połączyć się z baza danych...");
    } catch (Exception e) {
        System.out.println ("Błąd przy połączeniu z bazą danych...");
    }
    

    // wykonujemy SELECT i wypisujemy wynik zapytania na ekran
    try {
      Statement st=c.createStatement();
      ResultSet rs=st.executeQuery("SELECT * FROM test");
      while (rs.next()) {
        int pid=rs.getInt("id");
        String ptytul=rs.getString("user");
        String pautor=rs.getString("password");
        String email=rs.getString("email");
        System.out.println(email);
        
        
      }
      rs.close();
    } catch (Exception e) { 
      System.out.println ("Błąd przy pobieraniu danych...");
    }

   
  }
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...