2012-11-14 27 views
0

我有檢索數據庫項目的代碼,並在使用J2ME的移動應用程序中顯示該項目。我也爲此使用JSP,以便我的移動應用程序可以從中獲取信息。Java /數據庫查詢:檢索多個項目

我想知道如何檢索多個項目?

的JavaBean:

public String doQuery() throws ClassNotFoundException, SQLException { 
    //register driver 
    DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 

    //establish connection 
    Conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/a1electric?user=root&password=raam030"); 

    //Create a Statement object from the Connection 
    Statement stmt = Conn.createStatement(); 

    String sql = "SELECT JobID FROM employee WHERE employeeID=" +this.jobID; 
    ResultSet rs = stmt.executeQuery(sql); 
    String rt = ""; 
    rs.next(); 
    rt = rs.getString("JobID"); 
    Conn.close(); 
    return rt; 
    } 

JSP頁面:

<jsp:useBean id="bean0" scope="session" class="data.queryBean"/> 
<jsp:setProperty name="bean0" property="jobID" param="jobID"/> 
<%= bean0.doQuery() %> 

我想檢索所有作業ID該員工ID,並顯示它。

回答

6

如果對於一個給定的僱員多JobIDs,那麼你的結果集所有這些項目,你應該通過ResultSet瀏覽:

String sql = "SELECT JobID FROM employee WHERE employeeID=" +this.jobID; 
ResultSet rs = stmt.executeQuery(sql); 
List<String> jobIds = new ArrayList<String>(); 
while (rs.next()) { 
    jobIds.add(rs.getString("JobID")); 
} 

在一個相關的說明,您應該

  1. 嘗試使用連接池(apache DBCP),而不是每次註冊驅動程序並連接到數據庫。
  2. 利用PreparedStatement,以避免潛在的SQL注入攻擊:

    PreparedStatement stmt = con.prepareStatement(
        "SELECT JobID FROM employee WHERE employeeID= ?"); 
    stmt.setInt(1, this.jobID); 
    ResultSet rs = stmt.executeQuery(); 
    
+0

謝謝你的。這是我的大學項目,所以我並不擔心在這個時候的安全性的一部分。 –