下面的代码与YouTube视频完全相同,但对我不起作用。预期的输出是打印“连接”到系统,这意味着JDBC成功地连接到数据库。但我知道这个错误:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障
上一次成功发送到服务器的数据包是0毫秒前。驱动程序没有从服务器接收到任何数据包。
这是我的代码:
package sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Controller {
private static final String username = "root";
private static final String password = "";
private static final String connection = "jdbc:mysql://localhost/hello";
public static void main(String[] args) {
Connection conn = null;
try {
conn = DriverManager.getConnection(connection, username, password);
System.out.println("Connected");
}
catch (SQLException se) {
System.err.println(se);
}
}
}我成功地将JDBC添加为一个库,就像视频显示的那样,但是它不起作用。我在Stack溢出网站上看到了类似的问题,但都没有解决我的问题。任何帮助都将不胜感激,谢谢!
JDBC版本:mysql-连接器-java-5.1.47-bin.jar

发布于 2019-04-07 16:53:16
链接失败意味着DB是不可及的,请确认您的DB主机、端口、用户名和密码。如果一切都正确,请确认DB服务器正在运行,并且尚未达到最大连接限制。
而且您使用的是JDBC文件,这可能会损坏。因此,请检查它,我建议您使用Maven导入JDBC
您也没有注册JDBC驱动程序。首先,注册它
通过使用Class.forName("com.mysql.jdbc.Driver");
这里有一个示例供您参考,
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/EMP";
// Database credentials
static final String USER = "username";
static final String PASS = "password";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}我假设您将适当的JDBC依赖放在maven文件中,并将com.mysql.cj.jdbc.Driver作为新版本MySQL连接器的类使用。
在java.sql.Driver连接器/J中实现MySQL的类的名称已从com.mysql.jdbc.Driver更改为com.mysql.cj.jdbc.Driver。旧类名已被废弃。
https://stackoverflow.com/questions/55559592
复制相似问题