首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC不连接数据库

JDBC不连接数据库
EN

Stack Overflow用户
提问于 2019-04-07 13:37:09
回答 1查看 2.9K关注 0票数 1

下面的代码与YouTube视频完全相同,但对我不起作用。预期的输出是打印“连接”到系统,这意味着JDBC成功地连接到数据库。但我知道这个错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

上一次成功发送到服务器的数据包是0毫秒前。驱动程序没有从服务器接收到任何数据包。

这是我的代码:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2019-04-07 16:53:16

链接失败意味着DB是不可及的,请确认您的DB主机、端口、用户名和密码。如果一切都正确,请确认DB服务器正在运行,并且尚未达到最大连接限制。

而且您使用的是JDBC文件,这可能会损坏。因此,请检查它,我建议您使用Maven导入JDBC

您也没有注册JDBC驱动程序。首先,注册它

通过使用Class.forName("com.mysql.jdbc.Driver");

这里有一个示例供您参考,

代码语言:javascript
复制
// 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。旧类名已被废弃。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55559592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档