【问题标题】:Java / database query : Retrieving multiple itemsJava / 数据库查询:检索多个项目
【发布时间】:2012-11-14 04:25:29
【问题描述】:

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

【问题讨论】:

    标签: java jsp jdbc java-me javabeans


    【解决方案1】:

    如果给定的 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();
      

    【讨论】:

    • 谢谢你。这是我的大学项目,所以我现在不关心安全部分。
    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多