Mysql
 sql >> база данни >  >> RDS >> Mysql

Свържете Java към MySQL база данни

Ето обяснение стъпка по стъпка как да инсталирате MySQL и JDBC и как да ги използвате:

  1. Изтегляне и инсталирайте MySQL сървъра . Просто го направете по обичайния начин. Запомнете номера на порта всеки път, когато го промените. По подразбиране е 3306 .

  2. Изтегляне JDBC драйвера и поставете в пътека на класа , извлечете ZIP файла и поставете съдържащия JAR файл в пътя към класа. Специфичният за доставчика JDBC драйвер е конкретна реализация на JDBC API (урок тук ).

    Ако използвате IDE като Eclipse или Netbeans, тогава можете да го добавите към пътя към класа, като добавите JAR файла като Библиотека до Пътя на изграждане в имотите на проекта.

    Ако го правите "обикновена ванилия" в командната конзола, тогава трябва да посочите пътя до JAR файла в -cp или -classpath аргумент при изпълнение на вашето Java приложение.

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

    . е там само за добавяне на текущият директория към пътя към класа, така че да може да намери com.example.YourClass и ; е разделителя на пътя към класа, както е в Windows. В Unix и клонинги : трябва да се използва.

  3. Създайте база данни в MySQLа . Нека създадем база данни javabase . Вие, разбира се, искате World Domination, така че нека използваме и UTF-8.

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  4. Създаване на потребител за Java и grant достъпа . Просто защото използва root е лоша практика.

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

    Да, java е потребителското име и password е паролата тук.

  5. Определете JDBC URLа . За да свържете базата данни MySQL с помощта на Java, ви е необходим JDBC URL в следния синтаксис:

    jdbc:mysql://hostname:port/databasename
    • hostname :Името на хоста, където е инсталиран MySQL сървър. Ако е инсталиран на същата машина, където стартирате Java кода, тогава можете просто да използвате localhost . Може също да бъде IP адрес като 127.0.0.1 . Ако срещнете проблеми със свързването и използвате 127.0.0.1 вместо localhost го разреши, значи имате проблем в конфигурацията на вашата мрежа/DNS/hosts.

    • port :TCP/IP портът, където MySQL сървърът слуша. Това по подразбиране е 3306 .

    • databasename :Името на базата данни, към която искате да се свържете. Това е javabase .

    Така че крайният URL адрес трябва да изглежда така:

    jdbc:mysql://localhost:3306/javabase
  6. Тествайте връзката към MySQL с помощта на Javaта . Създайте прост Java клас с main() метод за тестване на връзката.

    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);
    }
    

    Ако получите SQLException: No suitable driver , тогава това означава, че или JDBC драйверът изобщо не е зареден автоматично, или че URL адресът на JDBC е грешен (т.е. не е разпознат от нито един от заредените драйвери). Обикновено JDBC 4.0 драйвер трябва да се зарежда автоматично, когато просто го пуснете в пътеката към класа по време на изпълнение. За да изключите едно и друго, винаги можете да го заредите ръчно, както следва:

    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);
    }
    

    Имайте предвид, че newInstance() обаждането ене необходими тук. Просто за да поправим стария и бъгав org.gjt.mm.mysql.Driver . Обяснение тук . Ако този ред хвърли ClassNotFoundException , тогава JAR файлът, съдържащ класа на драйвера JDBC, просто не е поставен в пътя към класа.

    Имайте предвид, че не е необходимо да зареждате драйвера всеки път преди свързване. Само веднъж по време на стартиране на приложението е достатъчно.

    Ако получите SQLException: Connection refused или Connection timed out или специфичен за MySQL CommunicationsException: Communications link failure , тогава това означава, че DB изобщо не е достъпен. Това може да има една или повече от следните причини:

    1. IP адресът или името на хоста в URL адреса на JDBC е грешен.
    2. Името на хост в JDBC URL не се разпознава от локалния DNS сървър.
    3. Номерът на порта липсва или е грешен в URL адреса на JDBC.
    4. DB сървърът не работи.
    5. DB сървърът не приема TCP/IP връзки.
    6. Сървърът на DB е изтекъл връзките.
    7. Нещо между Java и DB блокира връзките, напр. защитна стена или прокси.

    За да разрешите едното или другото, следвайте следните съвети:

    1. Проверете и тествайте ги с ping .
    2. Опреснете DNS или вместо това използвайте IP адрес в JDBC URL.
    3. Проверете го въз основа на my.cnf на MySQL DB.
    4. Стартирайте DB.
    5. Проверете дали mysqld се стартира без --skip-networking option .
    6. Рестартирайте DB и коригирайте кода си съответно, че затваря връзките finally .
    7. Деактивирайте защитната стена и/или конфигурирайте защитната стена/прокси сървъра, за да разрешите/препратите порта.

    Имайте предвид, че затварянето на Connection еизключително важно. Ако не затворите връзки и продължите да получавате много от тях за кратко време, тогава в базата данни може да се изчерпят връзките и приложението ви може да се счупи. Винаги придобивайте Connection в try-with-resources изявление . Или ако все още не сте на Java 7, изрично го затворете в finally на try-finally блок. Затваря се finally е само да се гарантира, че и той ще бъде затворен в случай на изключение. Това важи и за Statement , PreparedStatement и ResultSet .

Това беше, що се отнася до свързаността. Можете да намерите тук по-разширен урок как да зареждате и съхранявате пълноценни обекти на Java модел в база данни с помощта на основен DAO клас.

Използването на единичен модел за DB връзката е лош подход. Вижте наред с други въпроси:http://stackoverflow.com/q/9428573/ . Това е грешка номер 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WEEK() Примери – MySQL

  2. Сравнение между MySQL Clone Plugin и Xtrabackup

  3. Изберете MySQL база данни на Linux чрез командния ред

  4. Подреждане по реда на стойностите в SQL IN() клауза

  5. Как да вмъкна BLOB и CLOB файлове в MySQL?