测试所有建议的解决方案时无法连接到 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 无法连接到某些 WiFi 的 Azure 服务器:允许所有 IP