3 回答
TA贡献1998条经验 获得超6个赞
这是一步一步解释如何安装MySQL和JDBC以及如何使用它:
下载并安装MySQL服务器。按照通常的方式做到这一点。无论何时更改端口号,请记住端口号。这是默认情况
3306
。下载 JDBC驱动程序并放入类路径,解压缩ZIP文件并将包含的JAR文件放在类路径中。特定于供应商的JDBC驱动程序是 JDBC API的具体实现(此处为教程)。
如果您使用的是Eclipse或Netbeans之类的IDE,则可以通过将JAR文件作为库添加到项目属性中的构建路径来将其添加到类路径中。
如果您在命令控制台中执行“普通的vanilla”,则需要在执行Java应用程序时在
-cp
或-classpath
参数中指定JAR文件的路径。java -cp .; / path / to / mysql-connector.jar com.example.YourClass
的
.
是就在那里给添加当前目录到类路径中,以便它可以找到com.example.YourClass
和;
是类路径分隔符,因为它是在Windows中。在Unix中,:
应该使用克隆。在MySQL中创建一个数据库。我们来创建一个数据库
javabase
。你当然想要世界统治,所以让我们也使用UTF-8。CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
为Java 创建用户并授予其访问权限。仅仅因为使用
root
是一种不好的做法。CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';
是的,
java
是用户名,password
是这里的密码。确定 JDBC URL。要使用Java连接MySQL数据库,您需要使用以下语法的JDBC URL:
JDBC:MySQL的://主机名:端口/数据库名称
所以最终的URL应如下所示:
JDBC:MySQL的://本地主机:3306 / javabase
hostname
:安装MySQL服务器的主机名。如果它安装在您运行Java代码的同一台机器上,那么您可以使用它localhost
。它也可以是一个IP地址127.0.0.1
。如果您遇到连接问题并使用127.0.0.1
而不是localhost
解决它,那么您的网络/ DNS /主机配置中存在问题。port
:MySQL服务器侦听的TCP / IP端口。这是默认情况3306
。databasename
:您要连接的数据库的名称。那是javabase
。使用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 suitable driver
,那么这意味着JDBC驱动程序根本没有自动加载,或者JDBC URL错误(即任何加载的驱动程序都无法识别它)。通常,当您将JDBC 4.0驱动程序放在运行时类路径中时,应该自动加载它。要排除其中一个,您可以随时手动加载它,如下所示: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);}
需要注意的是,
newInstance()
在呼叫未在这里需要。它只是修复旧的和马车org.gjt.mm.mysql.Driver
。这里解释。如果此行抛出ClassNotFoundException
,则包含JDBC驱动程序类的JAR文件根本没有放在类路径中。请注意,您不需要在连接之前每次都 加载驱动程序。在应用程序启动期间只需一次即可。
如果您获得
SQLException: Connection refused
或Connection timed out
特定于MySQLCommunicationsException: Communications link failure
,则意味着DB根本无法访问。这可能有以下一个或多个原因:要解决这个问题,请遵循以下建议:
请注意,关闭
Connection
它非常重要。如果您没有关闭连接并在短时间内继续获取大量连接,那么数据库可能会用完连接而您的应用程序可能会中断。始终Connection
在try-with-resources
声明中获得。或者,如果你对Java 7的是没有,明确地关闭它在finally
一个的try-finally
块。关闭finally
只是为了确保它在异常情况下也会关闭。这也适用于Statement
,PreparedStatement
和ResultSet
。验证并测试它们
ping
。刷新DNS或使用JDBC URL中的IP地址。
根据
my.cnf
MySQL DB 验证它。启动数据库。
验证mysqld是否在没有启动的情况下启动
--skip-networking option
。重新启动数据库并相应地修改代码以关闭连接
finally
。禁用防火墙和/或配置防火墙/代理以允许/转发端口。
JDBC URL中的IP地址或主机名是错误的。
本地DNS服务器无法识别JDBC URL中的主机名。
JDBC URL中的端口号丢失或错误。
数据库服务器已关闭。
数据库服务器不接受TCP / IP连接。
数据库服务器已用完连接。
Java和DB之间的某些东西阻止了连接,例如防火墙或代理。
就连接问题而言,这就是它。您可以在这里找到一个更高级的教程,如何借助基本的DAO类在数据库中加载和存储完整的Java模型对象。
添加回答
举报