我在互联网上搜索,试图找到使用java和JDBC连接到MySQL的解决方案。不幸的是,我找到了多个答案,但没有一个能解决我的问题。
我从MySQL下载了JDBC,并解压文件以找到.jar。我将.jar放在C:/Program Files (X86)/Java/JDK.../JRE/lib/ext文件夹中。我设置了环境变量类路径(可能是CLASSPATH、classpath ??)设置为以下内容:
%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext我使用基于我所见过的所有不同解决方案编写的脚本来获得以下结果:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySql {
public static void main(String[] args)
{
Connection con = getConnection();
if (con != null) {
System.out.println("Connection Made");
}
else {
System.out.println("Connection not made");
}
}
private static Connection getConnection() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "java", "java");
System.out.println("Connection Made");
conn.close();
}
catch (SQLException e)
{
System.out.println(e.getMessage());
System.exit(0);
}
catch (ClassNotFoundException e)
{
System.out.println(e.getMessage());
System.exit(0);
}
return con;
}
}它使用javac MySql.java进行编译。然后,当它运行(java MySql)时,我得到com.mysql.jdbc。我读到我不需要注册驱动程序,但是当我删除Class.forName时,我得到的只是‘找不到JDBC驱动程序’的错误。
我不能将我的问题缩小到: 1)。类路径设置不正确。2)。错误的java连接代码。3)。找不到MySQL服务器。
任何帮助都将不胜感激。
编辑-
出于测试目的,我将.jar文件放到了桌面上。已更改系统类路径变量:
%CLASSPATH%;.;C:\User\User\Desktop\mysql-connector-java-5.1.38-bin.jar然后,当我为错误语句添加跟踪时,我得到:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass<Unkown Source>
at java.lang.ClassLoader.loadclass (Unknown source)
at sun.misc.Launcher$AppClassLoader.loadclass(Unkown Source)
etc.
etc.编辑2-我花了两天时间使用Connect Java to a MySQL database作为资源,但我遵循的说明都没有解决我的问题。
发布于 2015-12-12 06:33:24
而不是
System.out.println(e.getMessage());执行此操作
e.printStackTrace();您将看到例外情况是:
java.lang.ClassNotFoundException: com.mysql.jdbc
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.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 MySql.getConnection(MySql.java:24)
at MySql.main(MySql.java:10)卸下Class.forName。您可能会得到访问被拒绝或一些其他错误,但它将解决ClassNotFoundException。以下是最终编辑后的版本,应该可以使用:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySql {
public static void main(String[] args)
{
Connection con = getConnection();
if (con != null) {
System.out.println("Connection Made");
}
else {
System.out.println("Connection not made");
}
}
private static Connection getConnection() {
Connection con = null;
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "java", "java");
System.out.println("Connection Made");
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
System.exit(0);
}
return con;
}
}发布于 2015-12-12 06:35:16
如果你需要Class.forName(),你必须使用正确的类:
Class.forName("com.mysql.jdbc.Driver");但随着JDBC 4的出现,这一点已不再需要。
创建完整的异常堆栈跟踪并使用结果在此处搜索-大多数常见错误以前都已在此处解决。
NoSuitableDriverFound是一个非常强大的,它表明您的mysql-connector.jar (不是.zip...)在运行代码时,类路径中缺少。
您可以像这样尝试:
运行java -cp .;C:\User\User\Desktop\mysql-connector-java-5.1.38-bin.jar MySql
发布于 2015-12-12 06:34:17
我认为您必须在类路径中添加路径,包括驱动程序的jar文件名。如下所示:
%CLASSPATH%;.;C:\Program Files (x86)\Java\jdk1.8.0_65\jre\lib\ext\mysql-connector-java-xxx.jarhttps://stackoverflow.com/questions/34233558
复制相似问题