此代码在使用简单的应用程序时工作正常,因此驱动程序很好。 那么为什么连接对象无法使用驱动程序初始化。
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());
}
}
答案 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并重试。