Java /数据库查询:检索多个项目

Ram*_*man 0 java jsp jdbc javabeans java-me

我有代码来检索数据库项,并使用J2ME在移动应用程序中显示它.我也使用JSP,这样我的移动应用程序就可以从中获取信息.

我想知道如何检索多个项目?

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;
   }
Run Code Online (Sandbox Code Playgroud)

JSP页面:

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

我想检索此员工ID的所有作业ID并显示它.

Vik*_*dor 6

如果给定的EmployeeID有多个JobID,那么结果集包含所有这些项,您应该浏览结果集:

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"));
}
Run Code Online (Sandbox Code Playgroud)

在相关的说明,你应该

  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();
    
    Run Code Online (Sandbox Code Playgroud)