的Class.forName(" com.mysql.jdbc.Driver&#34)。的newInstance()

时间:2013-10-16 19:32:06

标签: java mysql servlets jdbc

我在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 个答案:

答案 0 :(得分:8)

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

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();
    }

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

答案 1 :(得分:4)

您需要的只是Class.forName("com.mysql.jdbc.Driver")

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

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

答案 2 :(得分:2)

您可能想要解决更大的问题。您不应该直接在servlet中输入数据库连接信息等配置数据。

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

以下Tomcat 7.0 JNDI Datasource HOW-TO显示了您可以通过各种方式获取Connection数据库。

在该页面上,您有一个代码示例,说明如何获取Connection(Oracle 8i,9i&amp; 10g - &gt;第3部分)和how to write a MySQL specific configuration

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

答案 3 :(得分:0)

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

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