2014-10-19 38 views
0

我想从我的前端JSP和另一个名为questions的表中向表questionpaper添加一些细节。将jsp和MySQL中的表中的值添加到MySQL中的另一个表中

在表questionpaper我有一个名为ExamID的列,我必须从名为question的另一个表中添加一个值ExamId column。这个ExamId value必须与从JSP页面添加的数据同时添加。来自JSP页面的数据被添加,没有任何错误,但不能同时添加ExamId

public int QuestionPaper(Questions paramQues) { 
    // TODO Auto-generated method stub 
    String query ="insert into questionpaper(Question,Opt1,Opt2,Opt3,Opt4,Answer,Marks,NegMarks,ExamId)values(?,?,?,?,?,?,?,?,?)"; 
    int status=0; 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/onlineexam", "root", "admin"); 
     PreparedStatement stat1 = con.prepareStatement(query); 
     if((paramQues.getAns1()!=null)&&(paramQues.getAns2()!=null)&&(paramQues.getAns3()!=null)&&(paramQues.getAns4()!=null)&&(paramQues.getMarks()!=null)&&(paramQues.getNegM()!=null)&&(paramQues.getQues()!=null)) 
     { 
      System.out.println("implementation "+paramQues.getOption()); 
      System.out.println("Marks-->"+paramQues.getMarks()); 
      System.out.println("Ans->>"+paramQues.getAns1()); 
      stat1.setString(1,paramQues.getQues()); 
      stat1.setString(2,paramQues.getAns1()); 
      stat1.setString(3,paramQues.getAns2()); 
      stat1.setString(4,paramQues.getAns3()); 
      stat1.setString(5,paramQues.getAns4()); 
      stat1.setString(6,paramQues.getOption()); 
      stat1.setInt(7,paramQues.getMarks()); 
      stat1.setInt(8,paramQues.getNegM()); 
      System.out.println("Ans->>"+paramQues.getAns1()); 

      String query2="SELECT * FROM questions ORDER BY ExamId DESC LIMIT 1"; 
      PreparedStatement stat2 = con.prepareStatement(query2); 

      ResultSet rs1 = stat2.executeQuery(query2); 
      Integer Examid= rs1.getInt("ExamId"); 
      System.out.println("exam id-->"+Examid); 

      stat1.setInt(9,Examid); 
      stat1.executeUpdate(); 
      Integer TotalQues= rs1.getInt("TotalQuestions"); 

      String query3="SELECT * FROM questionpaper ORDER BY PaperId DESC LIMIT 1"; 
      PreparedStatement stat3 = con.prepareStatement(query3); 
      ResultSet rs2 = stat3.executeQuery(query3); 
      Integer PaperId= rs2.getInt("PaperId"); 

      if(PaperId<=TotalQues) 

       status=1; 
      else 
       status=0; 
     } 

    } 

    catch (Exception e) 
    { 
     System.out.println("Exception in FacultyTry->" + e); 
    } 

return status; 
} 

输出

Answer:l 
j 
d 
d 
options-->o3 
Marks-->2 
NegMarks-->1 
implementation o3 
Marks-->2 
Ans->>l 
Ans->>l 
Exception in FacultyTry->java.sql.SQLException 
+0

,使用打印堆栈跟踪e.printStackTrace(System.out中)和正确识别哪些行trows异常,并张贴行 – 2014-10-19 17:08:16

+0

您的表名称是“问题”还是“问题”?你有没有检查你的SQL查询?那是否包含适当的表名和列名? – OO7 2014-10-19 17:37:14

回答

0

你提到,你的表包含您在SQL查询中使用ExamIdExamID列&。以下任一查询都包含错误的列名称。

你的SQL查询:

String query ="insert into questionpaper(Question,Opt1,Opt2,Opt3,Opt4,Answer,Marks, 
    NegMarks,ExamId)values(?,?,?,?,?,?,?,?,?)"; 

OR 

String query2="SELECT * FROM questions ORDER BY ExamId DESC LIMIT 1"; 

所需SQL查询:

String query ="insert into questionpaper(Question,Opt1,Opt2,Opt3,Opt4,Answer,Marks, 
    NegMarks,ExamID)values(?,?,?,?,?,?,?,?,?)"; 

OR 

String query2="SELECT * FROM questions ORDER BY ExamID DESC LIMIT 1"; 
0

在你的代码并不需要准备一个没有通过?表示参数的声明。

使用的语句在你的catch语句来执行查询

ResultSet rs1 = stat1.executeQuery(query2); 

Statement stat2 = con.createStatement(); 
ResultSet rs1 = stat2.executeQuery(query2); 
相关问题