将 Java 连接到 MySQL 数据库

php小编香蕉为您带来关于将java连接到mysql数据库的专题问答。本文将为您解答如何在java应用程序中实现与mysql数据库的连接,让您轻松掌握相关知识,提升编程技能。无论您是初学者还是有经验的开发者,都能从本文中找到适合自己的解决方案,让数据库操作变得更加高效和便捷。让我们一起深入探讨吧!

问题内容

如何用 java 连接到 mysql 数据库?

当我尝试时,我得到

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)

登录后复制

或者

立即学习“Java免费学习笔记(深入)”;

java.lang.classnotfoundexception: com.mysql.jdbc.driver

登录后复制

或者

立即学习“Java免费学习笔记(深入)”;

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

登录后复制

解决方法

数据源

drivermanager 是一种相当古老的做事方式。更好的方法是获取 DataSource 对象。可以使用 DataSource 查找已为您配置的应用服务器容器:

context context = new initialcontext();datasource datasource = (datasource) context.lookup("java:comp/env/jdbc/mydb");

登录后复制

…或者直接从数据库驱动程序实例化和配置一个,例如 com.mysql.cj.jdbc.mysqldatasource (DataSource):

mysqldatasource datasource = new mysqldatasource();datasource.setuser("scott");datasource.setpassword("tiger");datasource.setservername("mydbhost.example.org");

登录后复制

…然后从中获取连接,同上:

connection conn = datasource.getconnection();statement stmt = conn.createstatement();resultset rs = stmt.executequery("select id from users");…rs.close();stmt.close();conn.close();

登录后复制

在现代 java 中,使用 DataSource 语法自动关闭 jdbc 资源(现在为 DataSource)。

try (    connection conn = datasource.getconnection();    statement stmt = conn.createstatement();    resultset rs = stmt.executequery("select id from users");) {    …}

登录后复制

以下是如何安装 mysql 和 jdbc 以及如何使用它的分步说明:

DataSource并安装mysql服务器。按照通常的方式做就可以了。每当您更改端口号时,请记住它。默认为 3306。

DataSource jdbc 驱动程序并放入类路径,解压 zip 文件并将包含的 jar 文件放入类路径中。特定于供应商的 jdbc 驱动程序是 DataSource (DataSource) 的具体实现。

如果您使用的是 eclipse 或 netbeans 等 ide,则可以通过将 jar 文件作为添加到项目中的构建路径,将其添加到类路径中属性。

如果您在命令控制台中以“普通”方式执行此操作,则需要在执行 java 应用程序时在 -cp 或 -classpath 参数中指定 jar 文件的路径。

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

登录后复制

. 只是将当前目录添加到类路径中,以便它可以找到 com.example.yourclass 和 ; 是类路径分隔符,因为它在视窗。在 unix 和克隆中,应使用 :。

如果您正在开发基于 servlet 的 war 应用程序,并希望手动管理连接(实际上,这种做法很糟糕),那么您需要确保 jar 最终位于构建的 /web-inf/lib 中。另请参见 DataSource。更好的做法是在服务器本身中安装物理 jdbc 驱动程序 jar 文件,并配置服务器以创建 jdbc 连接池。以下是 tomcat 的示例:DataSource

在 mysql 中创建 DataSource。让我们创建一个数据库javabase。您当然想要统治世界,所以我们也使用 utf-8。

create database javabase default character set utf8 collate utf8_unicode_ci;

登录后复制

java 访问 DataSource,它访问 DataSource。仅仅是因为使用 root 是一种不好的做法。

create user 'java'@'localhost' identified by 'password'; grant all on javabase.* to 'java'@'localhost' identified by 'password';

登录后复制

是的,这里 java 是用户名,password 是密码。

DataSource jdbc url。要使用 java 连接 mysql 数据库,您需要采用以下语法的 jdbc url:

jdbc:mysql://hostname:port/databasename

登录后复制

hostname:安装 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

登录后复制

DataSource 使用 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); }

登录后复制

如果您收到 sqlexception: no合适的驱动程序,则意味着 jdbc 驱动程序根本没有自动加载,或者 jdbc url 错误(即,任何加载的驱动程序都无法识别它)。另请参见 DataSource。通常,当您将 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); }

登录后复制

请注意,此处不需要调用 newinstance() 。对于mysql,只是为了修复旧的且有缺陷的org.gjt.mm.mysql.driver。 DataSource。如果此行抛出 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 极其非常重要。如果您不关闭连接并在短时间内不断获取大量连接,那么数据库可能会耗尽连接,并且您的应用程序可能会崩溃。始终获取 DataSource 中的 connection。这也适用于 statement、preparedstatement 和 resultset。另见DataSource

这就是连接问题。您可以在 DataSource 找到更高级的教程,了解如何借助基本 dao 类在数据库中加载和存储完整的 java 模型对象。

对数据库 connection 使用单例模式和/或 static 变量是一种不好的做法。参见其他 DataSource 这是第一个初学者错误。确保您不会落入这个陷阱。

以上就是将 Java 连接到 MySQL 数据库的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2600914.html

(0)
上一篇 2025年3月6日 19:08:40
下一篇 2025年3月6日 19:08:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用 JSP/Servlet 将文件上传到服务器?

    php小编柚子为您介绍java中关于如何使用jsp/servlet将文件上传到服务器的方法。在web开发中,文件上传是一个常见需求,通过jsp/servlet可以实现简单且高效的文件上传功能。接下来,我们将详细介绍如何通过java代码实现文…

    编程技术 2025年3月6日
    100
  • Java JSP 调试技巧:查找并修复错误

    Java JSP调试是开发过程中关键的一环,尤其是在查找和修复错误方面。php小编小新精心整理了一些实用的技巧,帮助开发人员更快速地定位和解决问题。通过本文的指导,您将学会如何利用调试工具和技术,提高代码质量和开发效率,让您的Java JS…

    2025年3月6日
    200
  • tomcat服务器打不开怎么办

    Tomcat 服务器无法打开的原因包括端口冲突、防火墙阻止、JRE 缺失或过时、配置错误、服务未启动、内存不足、文件损坏和系统资源不足,解决方案依次为:关闭占用端口的应用程序或更改端口配置;允许防火墙通过 8080 端口;安装或更新 JRE…

    2025年3月6日
    200
  • tomcat出现问题怎么解决

    若要解决 Tomcat 问题,步骤如下:确定错误类型。检查日志文件以获取详细信息。检查配置是否正确。重启 Tomcat。更新 Tomcat 到最新版本。检查依赖项是否已安装并为最新版本。访问 Tomcat 文档或寻求社区支持。 如何解决 T…

    2025年3月6日
    200
  • Java框架如何简化部署和运维?

    java框架通过提供开箱即用功能(数据库连接池、web服务器集成、错误处理等)和简化的配置接口(例如spring的注解配置)来简化java应用程序的部署和运维,从而使开发者可以专注于业务逻辑,确保应用程序的健壮性和可维护性。 Java框架简…

    2025年3月6日
    200
  • 战争,罐子,耳朵和焦油 – 存档文件格式

    WAR、JAR、EAR和TAR是四种不同的存档文件格式,分别用于不同的用途。WAR文件用于打包Java Web应用程序,包含Servlet、JSP和Web资源,部署在Tomcat等服务器上;JAR文件则打包Java类和库,用于独立应用程序或…

    2025年3月6日
    200
  • Eclipse启动Java程序报错“Usage: java javassist.tools.web.Webserver ”是怎么回事?

    Eclipse启动Java程序报错“Usage: java javassist.tools.web.Webserver ”的深度解析及解决方案 在Eclipse中运行Java程序时,出现“Usage: java javassist.tool…

    2025年3月6日
    200
  • 掌握 Python:综合指南

    掌握 Python:综合指南 Python 是当今最流行的编程语言之一,以其简单性和多功能性而闻名。无论您是初学者还是经验丰富的开发人员,掌握 Python 都可以为 Web 开发、数据分析、人工智能等领域带来大量机会。本指南将帮助您了解如…

    2025年3月6日
    200
  • Kaspa 币价格预测2024-2030

    Kaspa 于 2023 年末在币安合约交易平台上市后开始流行。自价格数据开始以来,价格已经上涨了 81,654%,许多人想知道 Kaspa 能提供什么,为什么这么多人对网络的可能性感到兴奋,以及这对网络原生的未来价格意味着什么货币,KAS…

    2025年3月6日 编程技术
    200
  • NodeJS 开发的未来:趋势、挑战和机遇

    简介NodeJS 彻底改变了开发人员进行服务器端编程的方式。作为一个强大的、事件驱动的运行时环境,它使 JavaScript(传统上的客户端语言)成为服务器端的强大玩家。凭借其非阻塞、异步特性,NodeJS 使开发人员能够构建可扩展的高性能…

    2025年3月6日
    200

发表回复

登录后才能评论