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. 毎回ドライバを登録してDBに接続するのではなく、接続プール(apache DBCP)を使用してみてください。
  2. 潜在的なSQLインジェクション攻撃を回避するには、PreparedStatementを使用します。

    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 に答える