MySQL/JDBC 问题
Posted
技术标签:
【中文标题】MySQL/JDBC 问题【英文标题】:MySQL/JDBC Issues 【发布时间】:2014-08-15 02:03:33 【问题描述】:我正在学习一个教程,并且对 JDBC 完全陌生,我对 Java 有扎实的知识和对 SQL 的简要了解。我有一个在线 VPS,里面有一个小数据库(只是用它来学习这个),但在以下情况下不断出错:
-
注册驱动程序
打开连接
这是我的简单课程。如果有人可以提供帮助,将不胜感激。
import java.sql.*;
public class ExampleJava
static final String USER = "HIDDEN_USERNAME";
static final String PASS = "HIDDEN_PASSWORD";
static final String DB_URL = "studiobooch.x10.mx";
static Connection conn;
public static void main(String[] args)
System.out.println("Connecting to database");
try
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("DB_URL", USER, PASS);
catch(SQLException e)
System.out.println("Connection error");
e.printStackTrace();
catch(ClassNotFoundException e)
e.printStackTrace();
打印出以下内容:
Connecting to database
java.sql.SQLException: No suitable driver found for studiobooch.x10.mx
at java.sql.DriverManager.getConnection(DriverManager.java:596)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at ExampleJava.main(ExampleJava.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
【问题讨论】:
您遇到了什么样的错误?您可以发布任何堆栈跟踪吗? 好的,一会儿。让我编辑原帖 您的类路径缺少 mysql 驱动程序 jar。另外,您确定您的 VPS 允许远程连接到他们的数据库吗? 它确实允许,当我询问实时支持说明我的原因时,他们告诉我没关系。就驱动程序而言,介意将我引导至您想到的 jar 文件吗? 构建时需要在类路径中包含 JDBC jar 文件。 【参考方案1】:将conn = DriverManager.getConnection("DB_URL", USER, PASS);
更改为conn = DriverManager.getConnection(DB_URL, USER, PASS);
编辑:对于 ClassNotFoundException,请确保您将 .jar 驱动程序正确添加到您的库中。
【讨论】:
啊,是的,感谢您指出这一点,我早些时候更改了它,因为我在那里有详细信息。不过还是有同样的问题【参考方案2】:我认为 DB_URL 需要是一个 JDBC 连接字符串,而不仅仅是一个域。尝试类似的方法:
static final String DB_URL = "jdbc:mysql://studiobooch.x10.mx/myDatabase"
从这里:What is the MySQL JDBC driver connection string?
【讨论】:
哦,是的!这确实有效,需要看看我是否可以使用正确的登录详细信息登录,非常感谢 奇怪,我被授予访问我的数据库的权限。但是 DB_URL 确实有效!我猜这是向前迈出的一步 检查以确保您也在使用正确的端口。 MySQL 的默认值为 3306。要测试这是否真的是他们的身份验证问题,您可以尝试通过独立的 MySQL 客户端连接到它并查看您是否能够进行身份验证。 所以我从 getConnection(..) 中删除 USER 和 PASS 参数并改用 PORT 和 DB_URL 吗?问题是,老实说,我不确定这个虚拟主机正在运行什么端口 抱歉,在您发表评论之前,我已将答案编辑为更好的测试方法。如果您在独立的 MySQL 客户端中遇到相同的错误,则可能是权限设置不正确,或者由于某种原因需要更改端口(例如,如果他们在不同的端口上有不同的客户端,在此如果您必须从他们那里找出正确的端口)。但是,如果您能够连接,您就知道这与您的程序有关。以上是关于MySQL/JDBC 问题的主要内容,如果未能解决你的问题,请参考以下文章
mysql 数据库问题com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
Mysql连接问题:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
jdbc连接mysql报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'é?