0

此代码适用于简单的应用程序,因此驱动程序很好。那么为什么连接对象无法使用驱动程序进行初始化。

导入java.sql.Connection;

导入 java.sql.DriverManager;

导入java.sql.SQLException;

导入 java.sql.Statement;

导入 com.opensymphony.xwork2.ActionSupport;

公共类插入扩展 ActionSupport {

public String execute() throws Exception, SQLException {

    String sql = "";

    String url = "jdbc:mysql://localhost:3306/test";

    //String dbName = "test";

    String driverName = "org.gjt.mm.mysql.Driver";

    String userName = "root";

    String password = "root";

    Connection con=null;

    Statement stmt=null;

    try {

        Class.forName(driverName).newInstance();

        con = DriverManager.getConnection(url, userName, password);

        stmt = con.createStatement();

    } catch (Exception e) {

        System.out.println(e.getMessage());

    }

}

4

1 回答 1

0

异常说明了什么?createStatement 上的 NullPointerException?

无论如何,该类是否已加载;是类路径上的类(即类路径上的 MySQL jar?)

检查从 Class.forName() 返回的对象以检查是否已找到该类。

在您发表评论后,很明显您遇到了类路径问题。mysql jar 不在类路径中。我假设您正在谈论 Web 应用程序可交付成果(war 文件),因为在 eclipse 中更改构建路径是微不足道的。

在部署在例如 tomcat 中的 Web 应用程序中,您可以查看 <webapp-name>/WEB-INF/lib。文件 WEB-INF/lib/mysql-connector-java-5.0.5.jar 或类似的文件应该在那里。

如果你有一个war文件(尚未部署),你可以使用命令行工具“jar”解压它,或者从中获取文件列表。如果你这样做(在命令行上)jar tf | grep mysql jarfile 应该是可见的。如果您使用窗户;WinRAR(可能还有 WinZip)也可以打开战争文件。在 WEB-INF/lib 中,一个 MySQL jar 应该是可见的。

如果您使用 maven 构建您的网络应用程序;不要忘记向 mysql jar 添加依赖项。如果你使用ant来构建;在创建 war 文件之前不要忘记将 mysql jar 文件复制到 WEB-INF/lib 中。

请注意,目前推荐的驱动程序是“com.mysql.driver.Driver”,而不是“org.gjt.mm.mysql.Driver”。您可以尝试加载该驱动程序类而不是旧驱动程序;更远; 检查这个驱动程序是否真的在mysql jar中(jar tf mysq.jar | grep Driver 左右)。如果 Driver 在 mysql jar 中并且mysql jar 在 webapp 的类路径中(在 WEB-INF/lib 中)并且那里只有一个 mysql jar(版本冲突不好玩),它仍然不起作用我真的不知道有什么问题。我想我会再次从 MySQL 下载驱动程序 jar 并再试一次。

于 2009-04-04T12:11:17.407 回答