Sambungkan Java ke pangkalan data MySQL
editor php Banana membawakan anda soalan dan jawapan khas tentang menyambungkan Java ke pangkalan data MySQL. Artikel ini akan menerangkan kepada anda cara menyambung ke pangkalan data MySQL dalam aplikasi Java, membolehkan anda menguasai pengetahuan yang berkaitan dengan mudah dan meningkatkan kemahiran pengaturcaraan anda. Sama ada anda seorang pemula atau pembangun yang berpengalaman, anda boleh mencari penyelesaian yang sesuai dengan anda dalam artikel ini untuk menjadikan operasi pangkalan data lebih cekap dan mudah. Mari selami!
Kandungan soalan
Bagaimana untuk menyambung ke pangkalan data mysql menggunakan java?
Bila saya cuba, saya dapat
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
Penyelesaian
数据源
drivermanager
是一种相当古老的做事方式。更好的方法是获取 DataSource
Objek. Anda boleh menggunakan JNDI untuk mencari bekas pelayan aplikasi yang telah dikonfigurasikan untuk anda:
context context = new initialcontext(); datasource datasource = (datasource) context.lookup("java:comp/env/jdbc/mydb");
…atau buat serta-merta dan konfigurasikan satu terus daripada pemacu pangkalan data, cth. com.mysql.cj.jdbc.mysqldatasource
(lihat dokumentasi):
mysqldatasource datasource = new mysqldatasource(); datasource.setuser("scott"); datasource.setpassword("tiger"); datasource.setservername("mydbhost.example.org");
…kemudian dapatkan sambungan daripadanya, sama seperti di atas:
connection conn = datasource.getconnection(); statement stmt = conn.createstatement(); resultset rs = stmt.executequery("select id from users"); … rs.close(); stmt.close(); conn.close();
Dalam java moden, gunakan sintaks cuba-dengan-sumber untuk menutup sumber jdbc secara automatik (kini AutoCloseable
).
try ( connection conn = datasource.getconnection(); statement stmt = conn.createstatement(); resultset rs = stmt.executequery("select id from users"); ) { … }
Berikut adalah arahan langkah demi langkah tentang cara memasang mysql dan jdbc serta cara menggunakannya:
Muat turun dan pasang pelayan mysql. Cuma buat cara biasa. Ingat apabila anda menukar nombor port. Lalai ialah
3306
.Muat turun pemandu jdbc dan letakkan di classpath, nyahzip fail zip dan letakkan fail jar yang disertakan dalam classpath. Pemacu jdbc khusus vendor ialah pelaksanaan konkrit JDBC API (tutorial di sini).
Jika anda menggunakan IDE seperti eclipse atau netbeans, anda boleh menambah fail jar pada classpath dengan menambahkannya sebagai library pada harta Build Path dalam projek anda.
Jika anda melakukan ini dengan cara "biasa" dalam konsol arahan, anda perlu menentukan laluan ke fail jar dalam parameter
-cp
或-classpath
semasa melaksanakan aplikasi java.java -cp .;/path/to/mysql-connector.jar com.example.yourclass
Salin selepas log masuk.
只是将当前目录添加到类路径中,以便它可以找到com.example.yourclass
和;
是类路径分隔符,因为它在视窗。在 unix 和克隆中,应使用:
.Jika anda sedang membangunkan aplikasi perang berasaskan servlet dan ingin mengurus sambungan secara manual (sebenarnya, ini adalah amalan yang tidak baik), maka anda perlu memastikan balang itu berakhir di
/web-inf/lib
binaan anda. Lihat juga Bagaimana untuk menambah perpustakaan JAR pada projek WAR tanpa menghadap java.lang.ClassNotFoundException? Pendekatan yang lebih baik ialah memasang fail jar pemacu jdbc fizikal dalam pelayan itu sendiri dan mengkonfigurasi pelayan untuk mencipta kolam sambungan jdbc. Berikut ialah contoh untuk tomcat: Bagaimana saya harus menyambung ke pangkalan data / sumber data JDBC dalam aplikasi berasaskan servlet?Buat pangkalan data dalam mysql. Jom buat pangkalan data . Sudah tentu anda mahu memerintah dunia, jadi kami menggunakan utf-8 juga.
javabase
create database javabase default character set utf8 collate utf8_unicode_ci;
Salin selepas log masukjava mengakses Buat pengguna, yang mengakses geran. Semata-mata kerana menggunakan adalah amalan yang tidak baik.
root
Ya, di sinicreate user 'java'@'localhost' identified by 'password'; grant all on javabase.* to 'java'@'localhost' identified by 'password';
Salin selepas log masukialah kata laluan.
java
是用户名,password
Tentukan jdbc url. Untuk menyambung ke pangkalan data mysql menggunakan java anda memerlukan url jdbc dengan sintaks berikut:
jdbc:mysql://hostname:port/databasename
Salin selepas log masukhostname
:安装 mysql 服务器的主机名。如果它安装在运行 java 代码的同一台机器上,那么您可以只使用localhost
。它也可以是 ip 地址,例如127.0.0.1
。如果您遇到连接问题,并且使用127.0.0.1
而不是localhost
解决了该问题,那么您的网络/dns/主机配置有问题。port
:mysql 服务器监听的 tcp/ip 端口。默认情况下为3306
。databasename
:您要连接的数据库的名称。那是javabase
。
所以最终的 url 应如下所示:
jdbc:mysql://localhost:3306/javabase
Salin selepas log masukTest the connection 使用 java 到 mysql。使用
main()
方法创建一个简单的 java 类来测试连接。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); }
Salin selepas log masuk如果您收到
sqlexception: no合适的驱动程序
,则意味着 jdbc 驱动程序根本没有自动加载,或者 jdbc url 错误(即,任何加载的驱动程序都无法识别它)。另请参见 The infamous java.sql.SQLException: No suitable driver found。通常,当您将 jdbc 4.0 驱动程序放入运行时类路径中时,应该会自动加载它。要排除其中一个或另一个,您可以随时手动加载它,如下所示:System.out.println("Loading driver ..."); try { Class.forName("com.mysql.cj.jdbc.Driver"); // Use com.mysql.jdbc.Driver if you're not on MySQL 8+ yet. System.out.println("Driver loaded!"); } catch (ClassNotFoundException e) { throw new IllegalStateException("Cannot find the driver in the classpath!", e); }
Salin selepas log masuk请注意,此处不需要调用
newinstance()
。对于mysql,只是为了修复旧的且有缺陷的org.gjt.mm.mysql.driver
。 Explanation here。如果此行抛出classnotfoundexception
,则说明包含 jdbc 驱动程序类的 jar 文件根本没有放置在类路径中。另请注意,抛出异常非常重要,以便立即阻止代码执行,而不是仅仅打印堆栈跟踪然后继续执行其余代码来抑制它。另请注意,您不需要每次在连接之前加载驱动程序。只需在应用程序启动期间一次就足够了。
如果您收到
sqlexception: 连接被拒绝
或connection timed out
或 mysql 特定的communicationsexception: 通信链路故障
,则意味着数据库根本无法访问。这可能由以下一个或多个原因造成:- jdbc url 中的 ip 地址或主机名错误。
- 本地 dns 服务器无法识别 jdbc url 中的主机名。
- jdbc url 中的端口号缺失或错误。
- 数据库服务器已关闭。
- 数据库服务器不接受 tcp/ip 连接。
- 数据库服务器已耗尽连接。
- java 和 db 之间的某些东西正在阻塞连接,例如防火墙或代理。
要解决其中一个问题,请遵循以下建议:
- 使用
ping
验证并测试它们。 - 刷新 dns 或在 jdbc url 中使用 ip 地址。
- 根据mysql db的
my.cnf
进行验证。 - 启动数据库。
- 验证 mysqld 是否在没有
--skip-networking 选项
的情况下启动。 - 重新启动数据库并相应地修复代码,使其关闭
finally
中的连接。 - 禁用防火墙和/或配置防火墙/代理以允许/转发端口。
请注意,关闭
connection
极其非常重要。如果您不关闭连接并在短时间内不断获取大量连接,那么数据库可能会耗尽连接,并且您的应用程序可能会崩溃。始终获取try-with-resources
statement 中的connection
。这也适用于statement
、preparedstatement
和resultset
。另见How often should Connection, Statement and ResultSet be closed in JDBC?这就是连接问题。您可以在 here 找到更高级的教程,了解如何借助基本 dao 类在数据库中加载和存储完整的 java 模型对象。
对数据库
connection
使用单例模式和/或static
变量是一种不好的做法。参见其他 Is it safe to use a static java.sql.Connection instance in a multithreaded system? 这是第一个初学者错误。确保您不会落入这个陷阱。Atas ialah kandungan terperinci Sambungkan Java ke pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Sejak penubuhannya pada tahun 2009, Bitcoin telah menjadi peneraju dalam dunia mata wang kripto dan harganya telah mengalami turun naik yang besar. Untuk memberikan gambaran keseluruhan sejarah yang komprehensif, artikel ini menyusun data harga Bitcoin dari 2009 hingga 2025, meliputi peristiwa pasaran utama, perubahan dalam sentimen pasaran dan faktor penting yang mempengaruhi pergerakan harga.

Bitcoin, sebagai mata wang kripto, telah mengalami turun naik pasaran yang ketara sejak penubuhannya. Artikel ini akan memberikan gambaran keseluruhan harga sejarah Bitcoin sejak kelahirannya untuk membantu pembaca memahami arah aliran harga dan detik pentingnya. Dengan menganalisis data harga sejarah Bitcoin, kami dapat memahami penilaian pasaran terhadap nilainya, faktor yang mempengaruhi turun naiknya, dan menyediakan asas untuk keputusan pelaburan masa hadapan.

Sejak penciptaannya pada tahun 2009, harga Bitcoin telah mengalami beberapa turun naik utama, meningkat kepada $ 69,044.77 pada November 2021 dan jatuh ke $ 3,191.22 pada Disember 2018. Sehingga Disember 2024, harga terkini telah melebihi $ 100,204.

Harga USD Bitcoin masa nyata Faktor yang menjejaskan harga bitcoin Petunjuk untuk meramalkan harga bitcoin masa depan Berikut adalah beberapa maklumat penting mengenai harga Bitcoin pada 2018-2024:

Ya, pengeluaran halaman H5 adalah kaedah pelaksanaan penting untuk pembangunan front-end, yang melibatkan teknologi teras seperti HTML, CSS dan JavaScript. Pemaju membina halaman H5 yang dinamik dan berkuasa dengan bijak menggabungkan teknologi ini, seperti menggunakan & lt; kanvas & gt; Tag untuk menarik grafik atau menggunakan JavaScript untuk mengawal tingkah laku interaksi.

Kaedah penyesuaian simbol saiz semula dalam CSS bersatu dengan warna latar belakang. Dalam perkembangan harian, kita sering menghadapi situasi di mana kita perlu menyesuaikan butiran antara muka pengguna, seperti menyesuaikan ...

Masalah pembukaan kontena kerana peninggalan teks yang berlebihan di bawah susun atur flex dan penyelesaian digunakan ...

Bagaimana untuk mencapai kesan lengkung 45 darjah segmen? Dalam proses melaksanakan segmen, bagaimana membuat sempadan yang betul berubah menjadi lengkung 45 darjah ketika mengklik butang kiri, dan titik ...