簡體   English   中英

的Class.forName(“com.mysql.jdbc.Driver”)。的newInstance()

[英]Class.forName(“com.mysql.jdbc.Driver”).newInstance()

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

這個簡單的方法怎么樣?!

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文件。

你只需要Class.forName("com.mysql.jdbc.Driver")

這類似於類加載器並為您加載驅動程序類。 為此,您需要添加相應的jar文件(具有驅動程序實現)。 因此,在類路徑中下載並添加mysql-connector.jar

注意:如果您使用的是Java 7,則無需添加Class.forName("com.mysql.jdbc.Driver")語句。在JDBC 4.1中添加了自動資源管理(ARM),默認情況下在Java中添加7。

您可能想要解決更大的問題。 您不應該直接在servlet中輸入數據庫連接信息等配置數據。

你在用Tomcat嗎? 你可以簡單地使用JNDI。 您將能夠更改數據庫詳細信息和驅動程序,而無需重新編譯您的servlet。

以下是Tomcat 7.0 JNDI數據源HOW-TO以各種方式顯示Connection到數據庫的方法。

在該頁面上,您有一個代碼示例,說明如何獲取Connection (Oracle 8i,9i和10g - >第3部分),以及如何編寫MySQL特定配置

確保下載一個正確的MySQL jar並將其放在Tomcat的lib/目錄中(或者你的WAR的WEB-INF/lib )。

您需要在此處找到mysqlconnector.jar文件:( http://dev.mysql.com/downloads/connector/j/ )到項目的lib文件夾中。 將其包含在您的項目中,然后您就可以訪問與數據庫的連接。

將該jar添加到構建路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM