簡體   English   中英

如何執行Java中的2個選擇查詢?

[英]How can i execute 2 Select Queries in Java?

我正在Eclipse上工作的代碼需要您的幫助。 當我嘗試執行Java中的2 Select Queries似乎不起作用時,我搜索了Internet,但找不到解決方案。 我需要執行2 select,因為我需要數據庫中2個表中的數據。

表1:問題表2:選擇

好吧,第一個查詢似乎運行良好,因為我可以在執行時按需找到項目。 表2中的項目使我執行“找不到列'selid'。”。 // Selid列在表2。

如果您可以在此方面為我提供幫助,我會在底部將您的錯誤代碼發布到您的網站上。 提前致謝。

public void doGet(HttpServletRequest req, HttpServletResponse res)
        throws IOException, ServletException {


    //String connectionURL = "jdbc:mysql://127.0.0.1:3306/newData";// newData is the database  
    //Connection connection;  
    Connection conn=null;

    String dbName="teddb";

    res.setContentType("text/html");
    res.setCharacterEncoding("utf-8");
    PrintWriter out = res.getWriter();
//String dbUserName="root";
//String dbPassword="root";

try{ 



     String qid = "";
     String question = "";
     String sel1  = "";
     String sel2 = "";
     String sel3 = "";
     String correct = "";
     String selid ="";
     String sel="";






     Connection dbCon;


     Class.forName(driver);
     dbCon = DriverManager.getConnection(dbURL);
     ResultSet rs;
     ResultSet rs2;
     Statement stmt;
     Statement stmt2;



     stmt = dbCon.createStatement();
     stmt2 = dbCon.createStatement();

     String qry = "";
     String qry2 = "";



    qry = "select * from questions";
    qry2 = "select * from selections";

    rs = stmt.executeQuery(qry);
    stmt = dbCon.prepareStatement(qry);


    rs2 = stmt2.executeQuery(qry2);
    stmt2 = dbCon.prepareStatement(qry2);



    String[] columns = new String[] { "qid", 
            "question_text" , "selid" , "selection_text" ,};


    Random rn = new Random();
    int range = 2 - 1 + 1;
    int randomNum =  rn.nextInt(range) + 1;

    out.println(randomNum);



    while (rs.next()) {

        for (int i = randomNum; i <= randomNum; i++) {
            question = rs.getString(columns[1]);
            sel1 = rs.getString(columns[2]);
            sel2 = rs.getString(columns[3]);

        }
    }

    PreparedStatement pstmt;

    for (int z=1;z<=3;z++){

       selid = String.valueOf(rs.getString(columns[2]));
       pstmt = dbCon.prepareStatement(qry2 + " where qid = ? and selid ='z'");
       pstmt.setString(1, qid);
       rs2 = pstmt.executeQuery();

    while (rs2.next()) {

        for (int i = randomNum; i <= randomNum; i++) {

                if (z==1)
            sel1 = rs.getString(columns[3]);
                else  if (z==2)
            sel2 = rs.getString(columns[3]);
                else
            sel3 = rs.getString(columns[3]);

    }
    }
    }

    out.println("<!DOCTYPE html>"+
            "<html><body>"+
            "<form method=\"post\" action=\"demoServlet\">"+
            "<b><h1>Ερώτηση</h1></b> <br><br>"+
            "<b><h1>"+question+" </h1></b> <br><br>"+
            "<b> 1: </b> <input type=\"radio\" name=\"iscorrect\" value=\"" + sel1 + "\"/><br>"+
            "<b> 2: </b> <input type=\"radio\" name=\"iscorrect\" value=\"" + sel2 + "\"/> <br>"+
            "<b> 3: </b> <input type=\"radio\" name = \"iscorrect\" value=\"" + sel3 + "\"/><br><br>"+

            "<br><input type=\"submit\" name=\"submit\" value=\"Απάντηση\"/>"+
            "</form></body></html>");






    dbCon.commit(); 

    String msg=" ";



    rs.close();
    rs2.close();
    stmt.close();
    dbCon.close();
}  
catch (Exception e){  
  out.println(e);  
}

概念是我有2張桌子,而iam制作了一個表格,用戶可以回答一些問題。 我執行兩個表,然后嘗試使用提交將變量放入表單。 DoPost將在同一Servlet中的DoGet之后生效。

這是表格的示例。

questions      | selections
qid | question | qid | | selid | selection_text |correct
q1  |  1+1?    | q1         1        5             0
                 q1         2        2             1 // true
                 q1         3        4             0 

更改

rs = stmt.executeQuery(qry);
rs2 = stmt.executeQuery(qry2);

rs = stmt.executeQuery(qry);//first query
rs2 = stmt2.executeQuery(qry2);//second query

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM