可能重复:
PreparedStatement IN clause alternatives?的Java MYSQL使用复选框选择
我想基于复选框选择从MySQL选择。 (复选框具有的ID,并从数据库中选择应该选择其中ID = - >被选择的ID?)
我用MVC架构组织它:
- 在JSP
是我的形式(这是动态的,因此可以有更多)
<input type="checkbox" name="checkboxes" value="1">XY <input type="checkbox" name="checkboxes" value="2">XY <input type="checkbox" name="checkboxes" value="3">XY
中的servlet我得到的值
String[] catids = request.getParameterValues("checkboxes"); //Forward to bean -> doesnt work because catids is like an array FrageBean f=FragenBean.getRandomQuestionByCategory(catids);
我bean是:
public static FrageBean getRandomQuestionByCategory(String catids) { ArrayList<Integer> alleFragenIds = new ArrayList<Integer>(); DatabaseMetaData dbmd; Statement sql; Connection db = null; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { System.out.println("driver not found"); } try { db = DriverManager .getConnection("jdbc:mysql://localhost:3306/xyz?" + "user=root&password=xyz"); dbmd = db.getMetaData(); System.out.println("Connected with: " + dbmd.getUserName() + " | " + "Connection to: " + dbmd.getDatabaseProductName() + " " + dbmd.getDatabaseProductVersion() + " successful.\n"); sql = db.createStatement(); } catch (SQLException ex) { System.out.println("Error: " + ex); } try { String query = "select id from quest where quest_id=?"; PreparedStatement prest = db.prepareStatement(query); prest.setString(1, catids); ResultSet rs = prest.executeQuery(); ArrayList fragenliste = new ArrayList(); while (rs.next()) { int fragenid = rs.getInt("id"); alleFragenIds.add(fragenid); } rs.close(); db.close(); } catch (SQLException ex) { System.out.println("Error: " + ex); } Random r = new Random(); int frageIndex = r.nextInt(alleFragenIds.size()); System.out.println("Contents of al: " + alleFragenIds); return new FrageBean(alleFragenIds.get(frageIndex)); }
在它的工作只有一个ID的时刻(因为我只有一个选择)。我怎样才能做到这一点复选框?如何将“catids”转发给bean并创建mysql-query动态? (从fragen where kategorie_id = [ALL CHECKED BOXES]选择ID)
在此先感谢!
这就是你需要的东西http://stackoverflow.com/questions/178479/preparedstatement-in-clause-alternatives –