Java 使用mysql的JDBC类型4连接

Java 使用mysql的JDBC类型4连接,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我编写了一个程序,使用具有类型4连接的jdbc连接到数据库。该程序编译得很好,但给出了java.lang.ClassNotFoundException的一个异常:com.mysql.jdbc.Driver。我提取了java文件所在文件夹中的所有文件夹,甚至将所有jar文件和数据库都放在同一文件夹中。数据库包含ID为1和2的两条记录。有什么问题吗 import java.sql.*; class TestJDBC { public static void main(String aa[]) {

我编写了一个程序,使用具有类型4连接的jdbc连接到数据库。该程序编译得很好,但给出了java.lang.ClassNotFoundException的一个异常:com.mysql.jdbc.Driver。我提取了java文件所在文件夹中的所有文件夹,甚至将所有jar文件和数据库都放在同一文件夹中。数据库包含ID为1和2的两条记录。有什么问题吗

import java.sql.*;

class TestJDBC {

public static void main(String aa[]) {

    try {
        Class.forName("com.mysql.jdbc.Driver");

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Student_Details", "root","");

        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("Select ID, studentname from Details where ID=1");

        while(rs.next()) {
            System.out.print(rs.getString("ID"));
            System.out.print("\t");
            System.out.println(rs.getString("StudentName"));
        }
    }
    catch(Exception e) {
        System.out.println(e);
    }
}

}

您需要在类路径中包含
com.mysql.jdbc.Driver

乙二醇

java-cp mysql.jar;。TestJDBC

其中mysql.jar是包含类文件的jar

com/mysql/jdbc/Driver.class

在windows计算机上

mysql-connector-java-5.0.8-bin.jar和
TestJDBC.class
放在同一文件夹中

从执行的文件夹
java-cp mysql-connector-java-5.0.8-bin.jar;。TestJDBC

这是意料之中的事

unix通常需要


java-cp mysql-connector-java-5.0.8-bin.jar:。TestJDBC

正如BevynQ所回答的,从命令行设置类路径会为cmd的特定当前实例设置路径(据我所知),如果退出/关闭并重新打开命令提示符,则需要再次设置路径。 我想有两种解决方案可以在程序中使用jar文件:

  • 解决方案1)复制Program files/Java/JRE/lib文件夹中的jar文件,这样它就可以用于运行时环境,但不建议在JDK/JRE中添加jar文件

  • 解决方案2)设置classpath变量以放置jar文件位置的完整路径,以便它可用于运行时环境: 复制jar文件位置的完整路径,转到环境变量,搜索用户/系统类路径变量(当前登录用户的用户变量,当前窗口上所有用户帐户的系统变量),如果存在,编辑它并将路径置于起始位置,否则创建新类路径变量并放置完整路径


如果您的
mysql-connector-java-5.0.8-bin.jar
文件在项目中的路径类似于
\lib\
,如下所示

然后使用cmd提示符(假设windows)将目录更改为此文件夹,然后您需要使用

javac -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass.java
如果不是windows,则使用
(仅当文件/文件夹名称中有空格时才需要引号)

然后和

java -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass

还要确保您没有使用重复的jar

尝试过它,但仍然得到相同的例外Windows或linux或其他?您不应该将jar文件放在JDK中以使类路径正常工作。它仅适用于JDK库(以及一些扩展库)。另外,
CLASSPATH
环境变量几乎从未被“真正的”Java程序使用过。一般来说,你应该忽略它的存在。@markrotteveel:谢谢你的建议。但就我所知,通过设置类路径,我们可以通知java运行时环境在哪里查找特定的API相关jar文件,以定位该API的类和其他资源。请让我知道我是否有误导性。是的,这就是类路径的用途,但一般来说,环境变量
classpath
不用于定义应用程序的类路径(例如,当您使用
java-cp…
java-jar…
、java Webstart等执行时,
classpath
被忽略)