2011-02-27 38 views
0

我試圖使用數據庫在Java中的GET請求響應Java中的GET請求。但它引發了一些我不知道如何解決這個問題的錯誤。應對使用數據庫

import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class TestServlet extends HttpServlet { 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException{ 
     try{ 
      //Accessing driver from the JAR file 
      Class.forName ("com.mysql.jdbc.Driver").newInstance(); 

      //Connect to Clockie's database 
      Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/database", "root", "root"); 

      //Here we create our query 
      String sql = "" + 
        "SELECT * " + 
        "FROM profiles " + 
        "WHERE profileId = '27'"; 
      PreparedStatement statement = con.prepareStatement(sql); 

      ResultSet result = statement.executeQuery(); 
      String xmls = ""; 

      result.next(); 
      xmls = result.getString("firstName") + " "+result.getString("lastName"); 
      System.out.println(xmls); 

      resp.getWriter().println(xmls); 
     } 
     catch(Exception e){ 
      System.err.println(e.getMessage()); 
     } 
    } 
} 

一切都很好,雖然,如果我設置一個main方法裏面使用doGet代碼塊?我是Java新手,請幫助!

編輯:

的例外是 「com.mysql.jdbc.Driver」;

回答

0

打印出你的catch塊使用e.printStackTrace();完整的堆棧跟蹤。

您可能沒有包含在classpath com.mysql.jdbc.Driver使用mysql-connector罐子。通過打印出來使用檢查您的類路徑:

System.out.println("classpath = " + System.getProperty("java.class.path")); 
+0

我把它添加到類路徑,否則,如果我把它放在一個main方法裏面的代碼塊將不會奏效。 e.printStackTrace();不工作,因爲該方法是無效的。 – einstein

+0

@ Woho87,而不是'通信System.err.println(e.getMessage());',用'e.printStackTrace()',並告訴我們完整的錯誤。 – dogbane

+0

拋出java.lang.ClassNotFoundException:com.mysql.jdbc.Driver \t在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:202) \t ..... – einstein