Berikut penjelasan step by step cara install MySQL dan JDBC serta cara menggunakannya:
-
Unduh dan instal server MySQL . Lakukan saja dengan cara biasa. Ingat nomor port setiap kali Anda mengubahnya. Ini secara default
3306
. -
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 menemukancom.example.YourClass
dan;
adalah pemisah classpath seperti di Windows. Di Unix dan mengkloning:
harus digunakan. -
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;
-
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 danpassword
adalah kata sandinya di sini. -
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 menggunakanlocalhost
. Itu juga bisa berupa alamat IP seperti127.0.0.1
. Jika Anda mengalami masalah konektivitas dan menggunakan127.0.0.1
bukannyalocalhost
menyelesaikannya, maka Anda memiliki masalah dalam konfigurasi jaringan/DNS/hosts Anda. -
port
:Port TCP/IP tempat server MySQL mendengarkan. Ini secara default3306
. -
databasename
:Nama database yang ingin Anda sambungkan. Itujavabase
.
Jadi URL final akan terlihat seperti:
jdbc:mysql://localhost:3306/javabase
-
-
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 memperbaikiorg.gjt.mm.mysql.Driver
yang lama dan buggy . Penjelasan di sini . Jika baris ini menampilkanClassNotFoundException
, 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
atauConnection timed out
atauCommunicationsException: Communications link failure
khusus MySQL , maka itu berarti DB tidak dapat dijangkau sama sekali. Ini dapat memiliki satu atau beberapa penyebab berikut:- Alamat IP atau nama host di URL JDBC salah.
- Nama host di URL JDBC tidak dikenali oleh server DNS lokal.
- Nomor port tidak ada atau salah di URL JDBC.
- Server DB mati.
- Server DB tidak menerima koneksi TCP/IP.
- Server DB kehabisan koneksi.
- Sesuatu di antara Java dan DB memblokir koneksi, mis. firewall atau proxy.
Untuk memecahkan satu atau yang lain, ikuti saran berikut:
- Verifikasi dan uji dengan
ping
. - Segarkan DNS atau gunakan alamat IP di URL JDBC.
- Verifikasi berdasarkan
my.cnf
dari MySQL DB. - Mulai DB.
- Verifikasi apakah mysqld dimulai tanpa
--skip-networking option
. - Mulai ulang DB dan perbaiki kode Anda sehingga menutup koneksi di
finally
. - 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 dapatkanConnection
dalamtry-with-resources
pernyataan . Atau jika Anda belum menggunakan Java 7, tutup secara eksplisit difinally
daritry-finally
memblokir. Menutupfinally
hanya untuk memastikan bahwa itu ditutup juga jika ada pengecualian. Ini juga berlaku untukStatement
,PreparedStatement
danResultSet
.
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.