2013-09-30 86 views
0

我是新來的sql和我使用NetBeans和MySQL。servlet netbeans mysql連接

我想做一個servlet來檢查數據庫的登錄細節。

我發現了一些代碼oline,但它不與數據庫交互。此外,我發現每個例子都不起作用。我究竟做錯了什麼。

下面是一些代碼

package login; 

import java.io.*; 

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.sql.*; 

/** 
* 
* @author john 
*/ 
public class LoginServlet extends HttpServlet { 



    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

     String userName = request.getParameter("userName"); 


     if (Validate.CheckUser(userName)) { 
      RequestDispatcher rs = request.getRequestDispatcher("Welcome"); 
      rs.forward(request, 
      response   
      ); 
     } 
else 
{ 
      RequestDispatcher rs = request.getRequestDispatcher("index.html"); 
      rs.include(request , response); 
     } 
} 
} 

package login; 

import java.sql.*; 

/** 
* 
* @author john 
*/ 
public class Validate { 

    public static boolean CheckUser(String userName) { 
     boolean st = false; 

     try { 
      Class.forName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); 

      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mynewdatabase?zeroDateTimeBehavior=convertToNull", "root", "admin"); 

      PreparedStatement ps = con.prepareStatement("SELECT userName FROM userData where userName=?"); 
      ps.setString(1, userName); 
      ResultSet rs = ps.executeQuery(); 
      st = rs.next(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return st; 
    } 
} 

什麼是我需要得到這個連接到數據庫的額外步驟。我正在使用最新版本的netbeans。

我已將5.1.26-bin.jar文件放入庫中。 Mynewdatabase運行得很好(我之前在一個不同的應用程序中使用一個JSP連接池進行連接)。

雖然此應用程序不會連接到數據庫。我在這裏沒有使用連接池。

任何幫助將是偉大的。

+0

究竟是什麼問題? –

+0

確保你提供了正確的驅動程序名稱和數據庫名稱。 –

回答

2

連接到數據庫有什麼都沒有使用NetBeans或servlet的事情。我建議你在添加不必要的複雜情況之前先讓數據庫類工作。

這會幫助你,如果你發佈錯誤。 「不工作」沒有幫助。

您的MySQL驅動程序類別看起來不正確。應該是com.mysql.jdbc.Driver

但是你的代碼有很多錯誤。

您的查詢返回一個用戶名。沒有密碼?沒有用。

沒有應用程序應該使用根管理員密碼訪問數據庫。爲應用程序創建一個ID,並且只授予足夠的權限來執行其任務。

您不關閉方法中的資源。如果你想讓它運行,你會遇到問題。

回來,如果你得到它的工作。

+0

沒有應用程序應該使用root管理員密碼訪問數據庫。爲應用程序創建一個ID,並且只授予足夠的權限來執行其任務。我該怎麼做呢?我所做的netBeans教程都使用root作爲訪問數據庫的用戶。 –

+0

不要太依賴NetBeans和很差的教程:http://dev.mysql.com/doc/refman/5.0/en/create-user.html – duffymo

0

從數據庫中檢索,你應該用這樣的方式

while(rs.next()) 
{ 
String coulm1=rs.getString(1); 
String column2=rs.getString(2); 
} 
0

的代碼應該是這樣的:

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

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mynewdatabase", "root", "admin"); 

您還需要MySQL驅動 jar文件添加到類路徑。首先嚐試使用數據庫網址中的簡單參數與數據庫連接,然後在完全準備就緒時移至複雜數據庫!