Java.sql.SQLException yang terkenal:Tidak ditemukan driver yang cocok
Pengecualian ini pada dasarnya dapat memiliki dua penyebab:
#1. Driver JDBC tidak dimuat
Anda perlu memastikan bahwa driver JDBC ditempatkan di /lib
. milik server sendiri folder.
Atau, ketika Anda sebenarnya tidak menggunakan sumber data kumpulan koneksi yang dikelola server, tetapi secara manual mengutak-atik DriverManager#getConnection()
di WAR, maka Anda perlu menempatkan driver JDBC di /WEB-INF/lib
WAR dan lakukan ..
Class.forName("com.example.jdbc.Driver");
.. dalam kode Anda sebelum DriverManager#getConnection()
pertama panggilan di mana Anda memastikan bahwa Anda tidak menelan/mengabaikan ClassNotFoundException
any yang dapat dilemparkan olehnya dan melanjutkan aliran kode seolah-olah tidak ada hal luar biasa yang terjadi. Lihat juga Di mana saya harus menempatkan driver JDBC untuk kumpulan koneksi Tomcat?
#2. Atau, URL JDBC salah sintaks
Anda perlu memastikan bahwa URL JDBC sesuai dengan dokumentasi driver JDBC dan perlu diingat bahwa biasanya peka huruf besar/kecil. Ketika URL JDBC tidak mengembalikan true
untuk Driver#acceptsURL()
untuk salah satu driver yang dimuat, maka Anda juga akan mendapatkan pengecualian ini.
Dalam kasus PostgreSQL itu didokumentasikan di sini.
Dengan JDBC, database diwakili oleh URL (Uniform Resource Locator). Dengan PostgreSQL™, ini mengambil salah satu bentuk berikut:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
Dalam kasus MySQL itu didokumentasikan di sini.
Format umum untuk URL JDBC untuk menghubungkan ke server MySQL adalah sebagai berikut, dengan item dalam tanda kurung siku (
[ ]
) menjadi opsional:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
Dalam kasus Oracle itu didokumentasikan di sini.
Ada 2 sintaks URL, sintaks lama yang hanya akan bekerja dengan SID dan yang baru dengan nama layanan Oracle.
Sintaks lama
jdbc:oracle:thin:@[HOST][:PORT]:SID
Sintaks baru
jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
###Lihat juga:
- Di mana saya harus menempatkan driver JDBC untuk kumpulan koneksi Tomcat?
- Cara menginstal driver JDBC di proyek web Eclipse tanpa menghadapi java.lang.ClassNotFoundexception
- Bagaimana saya harus terhubung ke database/sumber data JDBC dalam aplikasi berbasis servlet?
- Apa perbedaan antara "Class.forName()" dan "Class.forName().newInstance()"?
- Menghubungkan Java ke database MySQL