Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połącz Javę z bazą danych MySQL

Oto wyjaśnienie krok po kroku, jak zainstalować MySQL i JDBC oraz jak z nich korzystać:

  1. Pobierz i zainstaluj serwer MySQL . Po prostu zrób to w zwykły sposób. Zapamiętaj numer portu za każdym razem, gdy go zmienisz. Domyślnie jest to 3306 .

  2. Pobierz sterownik JDBC i umieścić w ścieżce klas , wyodrębnij plik ZIP i umieść zawierający plik JAR w ścieżce klasy. Sterownik JDBC specyficzny dla dostawcy jest konkretną implementacją interfejs API JDBC (tutorial tutaj ).

    Jeśli używasz IDE, takiego jak Eclipse lub Netbeans, możesz dodać je do ścieżki klasy, dodając plik JAR jako Biblioteka do ścieżki budowania we właściwościach projektu.

    Jeśli robisz to "plain vanilla" w konsoli poleceń, musisz określić ścieżkę do pliku JAR w -cp lub -classpath argument podczas wykonywania aplikacji Java.

    java -cp .;/path/to/mysql-connector.jar com.example.YourClass

    . jest tylko po to, aby dodać bieżący katalogu do ścieżki klasy, aby mógł zlokalizować com.example.YourClass i ; jest separatorem ścieżki klas, tak jak w systemie Windows. W Uniksie i klonach : powinno być używane.

  3. Utwórz bazę danych w MySQL . Stwórzmy bazę danych javabase . Oczywiście chcesz dominacji nad światem, więc użyjmy również UTF-8.

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  4. Utwórz użytkownika dla Javy i grant ma dostęp . Po prostu dlatego, że za pomocą root to zła praktyka.

    CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
    

    Tak, java to nazwa użytkownika i password jest tutaj hasło.

  5. Określ adres URL JDBC . Aby połączyć bazę danych MySQL za pomocą Javy, potrzebujesz adresu URL JDBC w następującej składni:

    jdbc:mysql://hostname:port/databasename
    • hostname :nazwa hosta, na którym zainstalowany jest serwer MySQL. Jeśli jest zainstalowany na tym samym komputerze, na którym uruchamiasz kod Java, możesz po prostu użyć localhost . Może to być również adres IP, taki jak 127.0.0.1 . Jeśli napotkasz problemy z łącznością i używasz 127.0.0.1 zamiast localhost rozwiązałeś to, masz problem z konfiguracją sieci/DNS/hostów.

    • port :Port TCP/IP, na którym nasłuchuje serwer MySQL. Domyślnie jest to 3306 .

    • databasename :nazwa bazy danych, z którą chcesz się połączyć. To jest javabase .

    Tak więc końcowy adres URL powinien wyglądać tak:

    jdbc:mysql://localhost:3306/javabase
  6. Przetestuj połączenie do MySQL przy użyciu Javy . Utwórz prostą klasę Java za pomocą main() metoda testowania połączenia.

    String url = "jdbc:mysql://localhost:3306/javabase";
    String username = "java";
    String password = "password";
    
    System.out.println("Connecting database...");
    
    try (Connection connection = DriverManager.getConnection(url, username, password)) {
        System.out.println("Database connected!");
    } catch (SQLException e) {
        throw new IllegalStateException("Cannot connect the database!", e);
    }
    

    Jeśli otrzymasz SQLException: No suitable driver , oznacza to, że albo sterownik JDBC nie został w ogóle załadowany automatycznie, albo adres URL JDBC jest nieprawidłowy (tj. nie został rozpoznany przez żaden z załadowanych sterowników). Zwykle sterownik JDBC 4.0 powinien być ładowany automatycznie po upuszczeniu go w ścieżce klas środowiska wykonawczego. Aby wykluczyć jedno i drugie, zawsze możesz je ręcznie załadować, jak poniżej:

    System.out.println("Loading driver...");
    
    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded!");
    } catch (ClassNotFoundException e) {
        throw new IllegalStateException("Cannot find the driver in the classpath!", e);
    }
    

    Zauważ, że newInstance() połączenie nie potrzebne tutaj. Wystarczy naprawić stary i wadliwy org.gjt.mm.mysql.Driver . Wyjaśnienie tutaj . Jeśli ta linia zwróci ClassNotFoundException , plik JAR zawierający klasę sterownika JDBC po prostu nie jest umieszczany w ścieżce klasy.

    Pamiętaj, że nie musisz ładować sterownika za każdym razem przed złączony. Wystarczy tylko raz podczas uruchamiania aplikacji.

    Jeśli otrzymasz SQLException: Connection refused lub Connection timed out lub specyficzny dla MySQL CommunicationsException: Communications link failure , oznacza to, że baza danych jest w ogóle nieosiągalna. Może to mieć jedną lub więcej z następujących przyczyn:

    1. Adres IP lub nazwa hosta w adresie URL JDBC jest nieprawidłowy.
    2. Nazwa hosta w adresie URL JDBC nie jest rozpoznawana przez lokalny serwer DNS.
    3. Brak numeru portu lub jest on nieprawidłowy w adresie URL JDBC.
    4. Serwer DB nie działa.
    5. Serwer DB nie akceptuje połączeń TCP/IP.
    6. Na serwerze DB zabrakło połączeń.
    7. Coś pomiędzy Javą a DB blokuje połączenia, np. zapora lub serwer proxy.

    Aby rozwiązać jedno lub drugie, postępuj zgodnie z następującymi wskazówkami:

    1. Zweryfikuj i przetestuj je za pomocą ping .
    2. Odśwież DNS lub użyj adresu IP w adresie URL JDBC.
    3. Zweryfikuj go na podstawie my.cnf bazy danych MySQL.
    4. Uruchom DB.
    5. Sprawdź, czy mysqld jest uruchomiony bez opcji --skip-networking option .
    6. Zrestartuj bazę danych i odpowiednio popraw swój kod, aby zamykał połączenia w finally .
    7. Wyłącz zaporę i/lub skonfiguruj zaporę/proxy, aby zezwolić/przekazać port.

    Zwróć uwagę, że zamknięcie Connection jest bardzo ważny. Jeśli nie zamykasz połączeń i otrzymujesz ich dużo w krótkim czasie, to w bazie danych może zabraknąć połączeń, a Twoja aplikacja może się zepsuć. Zawsze uzyskuj Connection w try-with-resources oświadczenie . Lub jeśli nie korzystasz jeszcze z Javy 7, zamknij ją w finally try-finally blok. Zamykanie w finally jest tylko zapewnienie, że zostanie zamknięty również w przypadku wyjątku. Dotyczy to również Statement , PreparedStatement i ResultSet .

To tyle, jeśli chodzi o łączność. Możesz znaleźć tutaj bardziej zaawansowany samouczek, jak ładować i przechowywać w pełni wartościowe obiekty modelu Java w bazie danych za pomocą podstawowej klasy DAO.

Używanie wzorca Singleton dla połączenia DB jest złym podejściem. Zobacz między innymi:http://stackoverflow.com/q/9428573/ . To błąd nr 1 dla początkujących.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ADDDATE() Przykłady – MySQL

  2. Grupa MySQL firmy SUM

  3. Funkcja MySQL DEGREES() — konwersja z radianów na stopnie

  4. Zdalne połączenie MySQL nie powiodło się z nieznaną metodą uwierzytelniania

  5. Jak połączyć się z MySQL na Amazon EC2 z systemu Linux/Mac?