0

我有检索数据库项目的代码,它显示在使用 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;
   }

JSP 页面:

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

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

4

1 回答 1

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"));
}

在相关说明中,您应该

  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();
    
于 2012-11-14T04:33:14.590 回答