Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hubungkan Java ke database MySQL

Berikut penjelasan step by step cara install MySQL dan JDBC serta cara menggunakannya:

  1. Unduh dan instal server MySQL . Lakukan saja dengan cara biasa. Ingat nomor port setiap kali Anda mengubahnya. Ini secara default 3306 .

  2. Unduh driver JDBC dan masukkan ke classpath , ekstrak file ZIP dan letakkan file JAR yang berisi di classpath. Driver JDBC khusus vendor adalah implementasi nyata dari API JDBC (tutorial di sini ).

    Jika Anda menggunakan IDE seperti Eclipse atau Netbeans, Anda dapat menambahkannya ke classpath dengan menambahkan file JAR sebagai Library ke Build Path di properti proyek.

    Jika Anda melakukannya "plain vanilla" di konsol perintah, maka Anda perlu menentukan jalur ke file JAR di -cp atau -classpath argumen saat menjalankan aplikasi Java Anda.

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

    . hanya di sana untuk menambahkan saat ini direktori ke classpath juga sehingga dapat menemukan com.example.YourClass dan ; adalah pemisah classpath seperti di Windows. Di Unix dan mengkloning : harus digunakan.

  3. Buat database di MySQL . Mari kita buat database javabase . Anda tentu menginginkan Dominasi Dunia, jadi mari gunakan UTF-8 juga.

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    
  4. Buat pengguna untuk Java dan hibah itu mengakses . Hanya karena menggunakan root adalah praktik yang buruk.

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

    Ya, java adalah nama pengguna dan password adalah kata sandinya di sini.

  5. Tentukan URL JDBC . Untuk menghubungkan database MySQL menggunakan Java, Anda memerlukan URL JDBC dengan sintaks berikut:

    jdbc:mysql://hostname:port/databasename
    • hostname :Nama host tempat server MySQL diinstal. Jika diinstal pada mesin yang sama tempat Anda menjalankan kode Java, maka Anda cukup menggunakan localhost . Itu juga bisa berupa alamat IP seperti 127.0.0.1 . Jika Anda mengalami masalah konektivitas dan menggunakan 127.0.0.1 bukannya localhost menyelesaikannya, maka Anda memiliki masalah dalam konfigurasi jaringan/DNS/hosts Anda.

    • port :Port TCP/IP tempat server MySQL mendengarkan. Ini secara default 3306 .

    • databasename :Nama database yang ingin Anda sambungkan. Itu javabase .

    Jadi URL final akan terlihat seperti:

    jdbc:mysql://localhost:3306/javabase
  6. Uji koneksi ke MySQL menggunakan Java . Buat kelas Java sederhana dengan main() metode untuk menguji koneksi.

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

    Jika Anda mendapatkan SQLException: No suitable driver , maka itu berarti bahwa driver JDBC tidak dimuat secara otomatis sama sekali atau bahwa URL JDBC salah (yaitu tidak dikenali oleh salah satu driver yang dimuat). Biasanya, driver JDBC 4.0 harus dimuat secara otomatis saat Anda meletakkannya di classpath runtime. Untuk mengecualikan satu dan lainnya, Anda selalu dapat memuatnya secara manual seperti di bawah ini:

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

    Perhatikan bahwa newInstance() panggilan tidak dibutuhkan di sini. Ini hanya untuk memperbaiki org.gjt.mm.mysql.Driver yang lama dan buggy . Penjelasan di sini . Jika baris ini menampilkan ClassNotFoundException , maka file JAR yang berisi kelas driver JDBC tidak ditempatkan di classpath.

    Perhatikan bahwa Anda tidak perlu memuat driver setiap saat sebelum menghubungkan. Cukup sekali saja saat startup aplikasi.

    Jika Anda mendapatkan SQLException: Connection refused atau Connection timed out atau CommunicationsException: Communications link failure khusus MySQL , maka itu berarti DB tidak dapat dijangkau sama sekali. Ini dapat memiliki satu atau beberapa penyebab berikut:

    1. Alamat IP atau nama host di URL JDBC salah.
    2. Nama host di URL JDBC tidak dikenali oleh server DNS lokal.
    3. Nomor port tidak ada atau salah di URL JDBC.
    4. Server DB mati.
    5. Server DB tidak menerima koneksi TCP/IP.
    6. Server DB kehabisan koneksi.
    7. Sesuatu di antara Java dan DB memblokir koneksi, mis. firewall atau proxy.

    Untuk memecahkan satu atau yang lain, ikuti saran berikut:

    1. Verifikasi dan uji dengan ping .
    2. Segarkan DNS atau gunakan alamat IP di URL JDBC.
    3. Verifikasi berdasarkan my.cnf dari MySQL DB.
    4. Mulai DB.
    5. Verifikasi apakah mysqld dimulai tanpa --skip-networking option .
    6. Mulai ulang DB dan perbaiki kode Anda sehingga menutup koneksi di finally .
    7. Nonaktifkan firewall dan/atau konfigurasikan firewall/proxy untuk mengizinkan/meneruskan port.

    Perhatikan bahwa menutup Connection adalah sangat penting. Jika Anda tidak menutup koneksi dan terus mendapatkan banyak koneksi dalam waktu singkat, database mungkin kehabisan koneksi dan aplikasi Anda mungkin rusak. Selalu dapatkan Connection dalam try-with-resources pernyataan . Atau jika Anda belum menggunakan Java 7, tutup secara eksplisit di finally dari try-finally memblokir. Menutup finally hanya untuk memastikan bahwa itu ditutup juga jika ada pengecualian. Ini juga berlaku untuk Statement , PreparedStatement dan ResultSet .

Itu saja sejauh menyangkut konektivitas. Anda dapat menemukan di sini tutorial lebih lanjut tentang cara memuat dan menyimpan objek model Java yang layak penuh dalam database dengan bantuan kelas DAO dasar.

Menggunakan Pola Singleton untuk koneksi DB adalah pendekatan yang buruk. Lihat di antara pertanyaan lain:http://stackoverflow.com/q/9428573/ . Ini adalah kesalahan pemula #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. Bagaimana cara menguji apakah kueri MySQL berhasil memodifikasi data tabel database?

  2. Mengatur kata sandi pengguna root MySQL di OS X

  3. Bagaimana cara membagi output dari mysqldump menjadi file yang lebih kecil?

  4. Mengembalikan baris 'terakhir' dari setiap 'grup menurut' di MySQL

  5. Kapitalisasi huruf pertama. MySQL