测试所有建议的解决方案时无法连接到 jdbc

Posted

技术标签:

【中文标题】测试所有建议的解决方案时无法连接到 jdbc【英文标题】:Can't connet to jdbc while testing all suggested solutions 【发布时间】:2015-12-01 09:08:04 【问题描述】:

我正在尝试连接到笔记本电脑上的 mysql。使用我在下面粘贴的代码。我添加了包含文件完整路径的 CLASSPATH

mysql-connector-java-5.1.37-bin.jar

并导出它。但我一直收到提到的错误。请有人告诉我,我缺少什么让我从我的机器上得到这个错误消息。

我的机器是 Fedora core 21,我试图在用户下执行代码,而不是 root,这是我正在使用的代码,当然静态最终变量“用户”和“密码”不为空字符串,因为它们在这里:

//STEP 1. Import required packages

import java.sql.*;

public class JDBCExample 
  // JDBC driver name and database URL    
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/";

   //  Database credentials   
   static final String USER = "";    
   static final String PASS = "";    

   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 connect ion    
      System.out.println("Connecting to database...");    
      conn = DriverManager.getConnection(DB_URL, USER, PASS);    
      //STEP 4: Execute a query   
      System.out.println("Creating database...");    
      stmt = conn.createStatement();          
      String sql = "CREATE DATABASE STUDENTS";    
      stmt.executeUpdate(sql);    
      System.out.println("Database created successfully...");    
   catch(SQLException se)    
      //Handle errors for JDBC    
      se.printStackTrace();    
   catch(Exception e)    
      //Handle errors for Class.forName   
      e.printStackTrace();    
   finally    
      //finally block used to close resources    
      try    
         if(stmt!=null)   
            stmt.close();    
      catch(SQLException se2)   
      // nothing we can do    
      try    
         if(conn!=null)    
            conn.close();    
      catch(SQLException se)    
         se.printStackTrace();   
      //end finally try    
   //end try   
   System.out.println("Goodbye!");    
//end main    
//end JDBCExample

我真的试图包含任何我可以猜到它相关的相关信息。如果需要更多信息来回答我愿意提供的问题。

【问题讨论】:

实际的错误信息是什么。标题看起来是手写的 数据库URL需要包含数据库名称。为什么都是空行?自 2007 年以来,不再需要第 2 步。关闭连接将关闭语句和结果集。 这是实际的错误消息:java.lang.ClassLoader 的 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 的 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。 loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at JDBCExample.main(JDBCExample.java:19) 再见! 错误信息表明 JDBC 驱动程序实际上不在类路径中。 我将 varibale 类路径添加到我的 .bashrc 文件中并且它工作正常。谢谢一月。 【参考方案1】:

DB_URL 应该设置 MySQL 的端口和数据库名称。

就像(windows):

jdbc\:mysql\://111.202.27.131\:3306/bridgeResultDatabase?characterEncoding\=utf8

这里bridgeResultDatabase是mysql数据库名,对我有用。

希望对你有帮助。

上面有一些错误。 更新(我在我的 Windows 中尝试并在 Linux 中使用 mysql 的根目录):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public static void main(String[] args) throws ClassNotFoundException, SQLException
    String JDBC_DRIVER="com.mysql.jdbc.Driver";
    String DB_URL="jdbc:mysql://192.168.11.52/mysql";
    Class.forName(JDBC_DRIVER);
    Connection conn = DriverManager.getConnection(DB_URL,"root","111111");
    Statement statement = conn.createStatement();
    String hrappSQL = "CREATE DATABASE testDatabase";
    statement.executeUpdate(hrappSQL);

我在我的 linux mysql 中成功创建了数据库“testDatabase”。

【讨论】:

这些反斜杠仅在属性文件中需要。 那么有什么修复它的计划吗? 这不起作用。在寻找答案时,我意识到我什至不知道我的 mysql URL。我试图了解如何找到我的 mysql URL。我还有一个问题:是否必须是root才能从java连接到mysql数据库? 当我使用 mysql 的 root 帐户时,您的代码可以正常工作。 是的。我使用了 root,并将变量类路径添加到我的 .bashrc 文件中,现在一切正常。谢谢大家。

以上是关于测试所有建议的解决方案时无法连接到 jdbc的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 JDBC 连接到 Phoenix

JDBC 无法连接到某些 WiFi 的 Azure 服务器:允许所有 IP

VMware Workstation 无法连接到虚拟机

无法使用 Postgresql 将 JDBC 连接到 sonarqube

无法将 JDBC 连接到 SQL 服务器?

无法使用 jdbc 驱动程序连接到 mysql