【问题标题】:Can't connet to jdbc while testing all suggested solutions测试所有建议的解决方案时无法连接到 jdbc
【发布时间】: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 文件中并且它工作正常。谢谢一月。

标签: java mysql jdbc


【解决方案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 文件中,现在一切正常。谢谢大家。
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多