2016-09-23 3 views
0

Я пытаюсь создать онлайн-приложение для викторины. У меня есть таблица вопросов с вопросом №, вопросом и параметрами. Требование состоит в том, чтобы отображать один вопрос и ans в пользовательском интерфейсе одновременно и когда пользователь нажимает дальше, переходите к другому. У меня есть код ниже, но запрос select не работает, когда я помещаю 'i'. Я попытался поставить 1 только для отладки и ее работы.динамический запрос mySQL с оператором инкремента

<form name="myform"> 

    <table> 
<% 
try 
{ 
Class.forName("com.mysql.jdbc.Driver"); 
String localhost="jdbc:mysql://localhost:3306/pr1"; 
Connection connection=DriverManager.getConnection(localhost, "root", "root"); 
Statement st=connection.createStatement(); 

int i= 1; 

ResultSet rs=st.executeQuery("select * from question where Qno=i");  
while(rs.next()) 
{ 
%> 
      <tr><td> <%=rs.getString("question")%></td></tr> 
      <tr><td><br/></td></tr> 
      <tr><td style="padding: 10px;">A .&nbsp;<input type="radio" name="option" value="optionA"/><%=rs.getString("optionA")%></td></tr> 
      <tr><td style="padding: 10px;">B .&nbsp;<input type="radio" name="option" value="optionB"/><%=rs.getString("optionB")%></td></tr> 
      <tr><td style="padding: 10px;">C .&nbsp;<input type="radio" name="option" value="optionC"/><%=rs.getString("optionC")%></td></tr> 
      <tr><td style="padding: 10px;">D .&nbsp;<input type="radio" name="option" value="optionD"/><%=rs.getString("optionD")%></td></tr> 
      <tr><td><br/></td></tr> 
      <tr><td><input type="submit" name="next" value="Next"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        <input type="submit" value="Previous"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        <input type="submit" value="Test Summary"/></td></tr> 
<% 
} 
%> 
    </table> 
<% 
    if(request.getParameter("next")!=null) 
    {i++; 
    System.out.print(i); 
    } 
    rs.close(); 



    st.close(); 
    connection.close(); 
    } 
catch(Exception e) 
{ 

    e.printStackTrace(); 
    } 

%> 
    </form> 

ответ

0

Java не PHP, он не собирается расширить переменную i в строке, содержащей команду SQL.

В своей простейшей форме, использование конкатенации:

ResultSet rs=st.executeQuery("select * from question where Qno=" + i); 

Если вы получаете любой параметр от пользователей, а затем использовать подготовленные операторы с параметрами, чтобы избежать SQL Injection.

Смежные вопросы