Bagaimana Anda terhubung ke database MySQL di Java?
Ketika saya mencoba, saya mengerti
java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
Atau
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Atau
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Jawaban:
DriverManager
adalah cara yang cukup lama dalam melakukan sesuatu. Cara yang lebih baik adalah dengan mendapatkanDataSource
, baik dengan mencari satu yang sudah dikonfigurasi oleh server aplikasi Anda:atau instantiating dan mengkonfigurasi satu dari driver database Anda secara langsung:
dan kemudian mendapatkan koneksi darinya, sama seperti di atas:
sumber
com.mysql.jdbc.Driver
? Apakah metode ini lebih baik?MysqlDataSource
mengimplementasikanjavax.sql.DataSource
yang merupakan mekanisme yang lebih baru.rs
danstmt
? Kenapa tidak adilconn
?Berikut ini adalah penjelasan langkah demi langkah cara menginstal MySQL dan JDBC dan cara menggunakannya:
Unduh dan instal server MySQL . Lakukan saja seperti biasa. Ingat nomor port setiap kali Anda mengubahnya. Secara default
3306
.Unduh driver JDBC dan masukkan classpath , ekstrak file ZIP dan masukkan file JAR yang mengandung di classpath. Driver JDBC khusus vendor adalah implementasi konkret dari JDBC API ( tutorial di sini ).
Jika Anda menggunakan IDE seperti Eclipse atau Netbeans, maka Anda dapat menambahkannya ke classpath dengan menambahkan file JAR sebagai Library ke Path Build di properti proyek.
Jika Anda melakukannya "plain vanilla" di konsol perintah, maka Anda perlu menentukan path ke file JAR di argumen
-cp
atau-classpath
ketika menjalankan aplikasi Java Anda.Itu
.
hanya ada untuk menambahkan direktori saat ini ke classpath juga sehingga dapat menemukancom.example.YourClass
dan;
pemisah classpath seperti di Windows. Di Unix dan klon:
harus digunakan.Buat database di MySQL . Mari kita buat database
javabase
. Anda tentu saja ingin Dominasi Dunia, jadi mari kita gunakan UTF-8 juga.Buat pengguna untuk Java dan beri akses . Hanya karena menggunakan
root
adalah praktik yang buruk.Ya,
java
adalah nama pengguna danpassword
kata sandi di sini.Tentukan URL JDBC . Untuk menghubungkan database MySQL menggunakan Java, Anda memerlukan URL JDBC dalam sintaks berikut:
hostname
: Nama host tempat server MySQL diinstal. Jika diinstal di mesin yang sama di mana Anda menjalankan kode Java, maka Anda bisa menggunakannyalocalhost
. Ini juga bisa berupa alamat IP seperti127.0.0.1
. Jika Anda mengalami masalah konektivitas dan menggunakan127.0.0.1
alih-alihlocalhost
menyelesaikannya, maka Anda memiliki masalah dalam konfigurasi jaringan / DNS / host 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:
Uji koneksi ke MySQL menggunakan Java . Buat kelas Java sederhana dengan
main()
metode untuk menguji koneksi.Jika Anda mendapatkan
SQLException: No suitable driver
, maka itu berarti bahwa driver JDBC sama sekali tidak dimuat secara otomatis atau bahwa URL JDBC salah (yaitu tidak dikenali oleh driver yang dimuat). Biasanya, driver JDBC 4.0 harus di-autoload ketika Anda baru saja menjatuhkannya di kelas runtime. Untuk mengecualikan satu dan lainnya, Anda selalu dapat memuatnya secara manual seperti di bawah ini:Perhatikan bahwa
newInstance()
panggilan tidak diperlukan di sini. Itu hanya untuk memperbaiki yang lama dan buggyorg.gjt.mm.mysql.Driver
. Penjelasan di sini . Jika baris ini melemparClassNotFoundException
, maka file JAR yang berisi kelas driver JDBC sama sekali tidak ditempatkan di classpath.Perhatikan bahwa Anda tidak perlu memuat driver setiap kali sebelum menghubungkan. Hanya sekali saja selama startup aplikasi sudah cukup.
Jika Anda mendapatkan
SQLException: Connection refused
atauConnection timed out
atau spesifik MySQLCommunicationsException: Communications link failure
, maka itu berarti DB tidak dapat dijangkau sama sekali. Ini dapat memiliki satu atau lebih penyebab berikut:Untuk mengatasi yang satu atau yang lain, ikuti saran berikut:
ping
.my.cnf
MySQL DB.--skip-networking option
.finally
.Perhatikan bahwa menutup
Connection
adalah sangat penting. Jika Anda tidak menutup koneksi dan terus mendapatkan banyak dari mereka dalam waktu singkat, maka database mungkin kehabisan koneksi dan aplikasi Anda mungkin rusak. Selalu dapatkanConnection
dalamtry-with-resources
pernyataan . Atau jika Anda tidak di Jawa 7 belum, secara eksplisit dekat dalamfinally
sebuahtry-finally
blok. Menutupfinally
hanya untuk memastikan bahwa itu ditutup juga dalam kasus pengecualian. Ini juga berlaku untukStatement
,PreparedStatement
danResultSet
.Itu sejauh menyangkut konektivitas. Anda dapat menemukan di sini tutorial yang lebih maju bagaimana memuat dan menyimpan objek model Java yang layak 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.
sumber
Inisialisasi konstanta basis data
Buat nama pengguna, kata sandi, URL dan driver properti konstan, batas pemungutan suara, dll.
Inisialisasi Koneksi dan Properti
Setelah koneksi dibuat, lebih baik menyimpan untuk tujuan penggunaan kembali.
Buat Properti
Objek properti menyimpan informasi koneksi, periksa apakah sudah disetel.
Hubungkan Database
Sekarang terhubung ke database menggunakan konstanta dan properti yang diinisialisasi.
Putuskan koneksi basis data
Setelah Anda selesai dengan operasi basis data, tutup saja koneksi.
Semuanya bersama
Gunakan kelas ini
MysqlConnect
secara langsung setelah mengubah database_name, nama pengguna dan kata sandi dll.Cara Penggunaan?
Inisialisasi kelas basis data.
Di tempat lain dalam kode Anda ...
Ini semua :) Jika ada yang perlu diperbaiki sunting! Semoga ini bisa membantu.
sumber
com.mysql.jdbc.Driver
inijdbc:mysql://localhost:3306/stocks
harus digunakan sebagai yang sudah usang.sumber
Inilah jumlah minimum yang Anda butuhkan untuk mendapatkan data dari database MySQL:
Tambahkan penanganan pengecualian, konfigurasi, dll. Sesuai selera.
sumber
Class.forName(...).newInstance()
?Koneksi MySQL JDBC dengan useSSL.
sumber
Anda perlu memiliki stoples konektor mysql di classpath Anda.
di Java JDBC API membuat semuanya dengan database. menggunakan JDBC kita dapat menulis aplikasi Java ke
1. Kirim pertanyaan atau perbarui SQL ke DB (semua basis data relasional) 2. Ambil dan proses hasil dari DB
dengan tiga langkah di bawah ini kami dapat mengambil data dari Database apa pun
sumber
Kode pendek dan manis.
Untuk SQL server 2012
sumber
Connection
Saya menggunakan beberapa waktu yang lalu, itu tampak seperti cara termudah, tetapi juga ada rekomendasi untuk membuatif
pernyataan di sana- persisAtau sesuatu seperti itu :)
Mungkin ada beberapa kasus, sementara
getConnection
dapat kembalinull
:)sumber
Anda dapat melihat semua langkah untuk menghubungkan database MySQL dari aplikasi Java di sini . Untuk database lain, Anda hanya perlu mengubah driver di langkah pertama saja. Pastikan Anda memberikan jalur yang benar ke basis data dan memperbaiki nama pengguna dan kata sandi.
Kunjungi http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA
sumber
Metode 1: mengatur variabel CLASSPATH.
Dalam perintah di atas, saya telah mengatur CLASSPATH ke folder saat ini dan file mysql-connector-java-VERSION.jar. Jadi ketika
java MyClassFile
perintah dieksekusi, peluncur aplikasi java akan mencoba memuat semua kelas Java di CLASSPATH. Dan ditemukan bahwaDrive
kesalahan BOOM class => hilang.Metode 2:
Catatan: Class.forName ("com.mysql.jdbc.Driver"); Ini sudah usang saat ini 2019 Apr.
Semoga ini bisa membantu seseorang!
sumber
Koneksi MySql JDBC:
sumber
Unduh Driver JDBC
Tautan unduhan (Pilih platform independen): https://dev.mysql.com/downloads/connector/j/
Pindahkan Driver JDBC ke Drive C
Buka zip file dan pindah ke C: \ drive. Jalur driver Anda harus seperti
C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19
Jalankan Java Anda
testMySQL.java
sumber
Kode pendek
sumber