繁体   English   中英

为什么Java看不到我的mysql驱动程序

[英]why can't java see my mysql driver

我在弄清楚为什么Java无法看到我的mysql驱动程序时遇到麻烦:

  • 我已经从mysql网站下载了驱动程序.jar
  • 我已将jar添加到我的运行时类路径中
  • 我可以通过打印相关的系统属性来确认jar在类路径中

但是我仍然收到ClassNotFound异常。 我还有什么需要做的吗?

类的例子:

package org.rcz.dbtest;

import java.sql.*;

public class DB {

    private Connection connect = null;
    private Statement stmt = null;
    private PreparedStatement prepared = null;
    private ResultSet rset = null;
    private String driverClassName = "com.myqsl.jdbc.Driver";
    private String jdbcUrl = "jdbc:mysql://localhost/ctic_local?user=root&password=server";
    private String queryString;

    public DB(String query)
    {
        System.out.println(System.getProperty("java.class.path"));
        queryString = query;
    }

    public void readFromDatabase()
    {
        try
        {
            Class.forName(driverClassName);
            connect = DriverManager.getConnection(jdbcUrl);
            stmt = connect.createStatement();
            rset = stmt.executeQuery(queryString);
            writeResultSet(rset);
        }
        catch (ClassNotFoundException cex)
        {
            System.out.println("Could not find mysql class");
        }
        catch(SQLException sqex)
        {

        }
    }

    private void writeResultSet(ResultSet resultSet) throws SQLException {
        // ResultSet is initially before the first data set
        while (resultSet.next()) {
            // It is possible to get the columns via name
            // also possible to get the columns via the column number
            // which starts at 1
            // e.g. resultSet.getSTring(2);
            String user = resultSet.getString("name");
            String comment = resultSet.getString("comment");
            System.out.println("User: " + user);
            System.out.println("Comment: " + comment);
        }
    }



}

我的主类只是将查询传递给DB类:

package org.rcz.dbtest;

import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException
    {
        String qstring = "SELECT * FROM comments";
        new DB(qstring).readFromDatabase();
        System.in.read();
    }

}

您在驱动程序类名称中有错字。

private String driverClassName = "com.myqsl.jdbc.Driver";

它应该是

private String driverClassName = "com.mysql.jdbc.Driver";
// -------------------------------------^

具体问题无关 ,将诸如ConnectionStatementResultSet之类的数据库资源作为类的实例变量持有是一个坏主意。 您需要在try-finally块中的最短范围内创建,使用和关闭它们,以防止资源泄漏。 另请参阅以下问题/答案: 当我的应用失去连接时,我应该如何恢复它?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM