2

我在 Netbeans 7.2 上遇到这个错误,它说 ClassNotFoundexception 和 InstantationException。我真的被这件事困住了。请帮助我。

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    try {
        String driver = "com.mysql.jdbc.Driver";
        con = null;
        String username = "";
        String password = "";

        Class.forName("com.mysql.jdbc.Driver").newInstance();

        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName", "root", "password");
        Statement st = con.createStatement();
        ResultSet mar = st.executeQuery("SELECT * FROM table");


        Gson gson = new GsonBuilder().create();
        response.setContentType("application/json");  
        response.setCharacterEncoding("utf-8"); 

    } catch (SQLException e) {
                String message = e.getMessage();
    }
4

4 回答 4

7

这个简单的方法怎么样?!

java.sql.Driver d=new com.mysql.jdbc.Driver();

我也想知道你为什么用这种方式连接到数据库?!最好让服务器管理它。

首先context.xml像这样配置(如果您使用的是tomcat):

<context>
<Resource name="_ds" auth="Container" type="javax.sql.DataSource"
               maxActive="128" maxIdle="32" username="_admin" password="qwerty" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://127.0.0.1:3306/dbname"/>
</context>

然后,简单地从 servlet/etc 中的该资源获取连接,如下所示:

public void init() {
    try {
        _ds = (DataSource) InitialContext.lookup("java:/comp/env/_ds");
    } catch (Exception ex) {
    }
}

private javax.sql.DataSource _ds;

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
{
    try {
        /*String driver = "com.mysql.jdbc.Driver";
        con = null;
        String username = "";
        String password = "";

        Class.forName("com.mysql.jdbc.Driver").newInstance();

        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName", "root", "password");*/
        Connection con=_ds.getConnection();
        Statement st = con.createStatement();
        ResultSet mar = st.executeQuery("SELECT * FROM table");


        Gson gson = new GsonBuilder().create();
        response.setContentType("application/json");  
        response.setCharacterEncoding("utf-8"); 
        con.close();
    } catch (SQLException e) {
        String message = e.getMessage();
    }

顺便说一句,不要忘记在文件夹中编译 MySQL JDBC 驱动程序 jar<CATALINA_BASE>/lib文件。

于 2013-10-16T20:25:28.523 回答
4

所有你需要的是Class.forName("com.mysql.jdbc.Driver")

这就像类加载器并为您加载驱动程序类。为此,您需要添加相应的 jar 文件(具有驱动程序实现)。所以下载并添加mysql-connector.jar到你的类路径中。

注意:如果您使用的是 Java 7,则甚至不需要添加Class.forName("com.mysql.jdbc.Driver")语句。在 Java 7 中默认提供的 JDBC 4.1 中添加了自动资源管理 (ARM)。

于 2013-10-16T19:47:33.910 回答
2

你可能想解决一个更大的问题。您不应该直接在您的 servlet 中输入配置数据,例如数据库连接信息。

你用的是Tomcat吗?您可以简单地使用 JNDI。您将能够更改数据库详细信息和驱动程序,而无需重新编译您的 servlet。

这是Tomcat 7.0 JNDI 数据源 HOW-TOConnection展示了获取数据库的各种方法。

在该页面上,您有一个如何获取Connection(Oracle 8i、9i 和 10g -> 第 3 部分)以及如何编写 MySQL 特定配置的代码示例。

确保下载正确的 MySQL jar 并将其放在 Tomcat 的lib/目录中(或者您的 WAR 目录WEB-INF/lib)。

于 2013-10-16T19:53:18.587 回答
0

您需要将mysqlconnector.jar此处找到的文件: ( http://dev.mysql.com/downloads/connector/j/ ) 添加到项目的 lib 文件夹中。将它包含在您的项目中,然后您可以访问与数据库的连接。

将该 jar 添加到构建路径中。

于 2013-12-20T09:41:02.553 回答