Struts2示例,不在mysql数据库中插入记录,因为连接对象变为null

时间:2009-04-04 11:59:50

标签: struts2

此代码在使用简单的应用程序时工作正常,因此驱动程序很好。 那么为什么连接对象无法使用驱动程序初始化。

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import com.opensymphony.xwork2.ActionSupport;

public class Insert extends 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());

    }

}

1 个答案:

答案 0 :(得分: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应该是可见的。如果你使用Windows; WinRAR(可能还有WinZip)也可以打开warfiles。在WEB-INF / lib中,MySQL jar应该是可见的。

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

请注意,目前推荐的驱动程序是'com.mysql.driver.Driver',而不是'org.gjt.mm.mysql.Driver'。您可以尝试加载该Driver类而不是旧驱动程序;进一步;检查这个驱动程序是否实际上在mysql jar中(jar tf mysq.jar | grep Driver等)。如果驱动程序在mysql jar 中,则mysql jar位于webapp的类路径上(在WEB-INF / lib中)那里只有一个mysql jar(版本冲突没有乐趣),它仍然无法正常工作我真的不知道什么是错的。我想我会再次从MySQL下载驱动程序jar并重试。