Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取所选单选按钮';将值存储在servlet中并将其存储在DB中?_Java_Mysql_Jsp_Servlets_Jdbc - Fatal编程技术网

Java 如何获取所选单选按钮';将值存储在servlet中并将其存储在DB中?

Java 如何获取所选单选按钮';将值存储在servlet中并将其存储在DB中?,java,mysql,jsp,servlets,jdbc,Java,Mysql,Jsp,Servlets,Jdbc,我正在开发一个投票应用程序,人们可以投票选择一个特定的选项并提交它。现在,我希望将用户选择的选项放在servlet中,并将其作为投票存储在数据库中。当收到新的选票时,该计数应始终增加1。但是,它没有给我想要的输出。每当我选择一个选项并单击submit时,1就会像投票一样插入数据库的相应列中。我已经在db中将选项命名为列名。我希望每一次新的投票都是对其先前价值的补充 以下是Voting.jsp页面:- <div class="card" style="width: 60rem; margin

我正在开发一个投票应用程序,人们可以投票选择一个特定的选项并提交它。现在,我希望将用户选择的选项放在servlet中,并将其作为投票存储在数据库中。当收到新的选票时,该计数应始终增加1。但是,它没有给我想要的输出。每当我选择一个选项并单击submit时,1就会像投票一样插入数据库的相应列中。我已经在db中将选项命名为列名。我希望每一次新的投票都是对其先前价值的补充

以下是Voting.jsp页面:-

<div class="card" style="width: 60rem; margin-left: 45px;">
  <div class="card-body">
  Click on one of the following options to caste your vote. Then click submit.

  </div>
  </div>


<div class="card" style="width: 60rem; margin-left: 45px;">
  <div class="card-body">
  <form action="SuccessServlet" method="post">
    <label class="container">Team_1
  <input type="radio" name="radio" value="team1">
  <span class="checkmark"></span>
</label>
<label class="container">Team_2
  <input type="radio" name="radio" value="team2">
  <span class="checkmark"></span>
</label>
<label class="container">Team_3
  <input type="radio" name="radio" value="team3">
  <span class="checkmark"></span>
</label>
<label class="container">Team_4
  <input type="radio" name="radio" value="team4">
  <span class="checkmark"></span>
</label>
<button type="submit">Submit</button>
</form>
  </div>
</div>

您的代码总是将1作为指定团队的总票数值写入。如果您在需要知道投票总数时,在SQL中使用
SUM()
函数对团队的投票计数进行合计,则可以这样做

有两种其他方法来处理此问题:

  • 每个团队在数据库中只有一条记录。每次投票时,读取当前值(如果找不到当前值,则假设为0),增加值,然后用新值更新记录

  • 每次投票都要插入记录。每次投票时,读取当前的
    MAX()
    值(如果找不到当前值,则假定为0),将其递增,然后插入另一条带有新值的记录


  • 您的代码总是将1作为指定团队的总票数值写入。如果您在需要知道投票总数时,在SQL中使用
    SUM()
    函数对团队的投票计数进行合计,则可以这样做

    有两种其他方法来处理此问题:

  • 每个团队在数据库中只有一条记录。每次投票时,读取当前值(如果找不到当前值,则假设为0),增加值,然后用新值更新记录

  • 每次投票都要插入记录。每次投票时,读取当前的
    MAX()
    值(如果找不到当前值,则假定为0),将其递增,然后插入另一条带有新值的记录


  • 假设选择了
    team1
    单选按钮,现在您需要使用
    select
    查询来获取
    team1
    以前投票的值,如下所示:

       try {
                Class.forName("com.mysql.cj.jdbc.Driver");
              Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
        String sql="select votes from Total_Votes where team=?";
                         int votes=0;
                        PreparedStatement ps = con.prepareStatement(sql);
                       ps.setString(1,"team1");//passing team1 in query
                       rs = ps.executeQuery();
                        while(rs.next())
                       {
              votes=rs.getInt("yourcoulmnname");//getting value of coulmn where votes are stored for team1
                      }
                       }catch(Exception e)
                       {
                       System.out.println(e.getMessage());
                       }
    
    现在,使用
    update
    query更新投票,如下所示:

    String sql1 = "UPDATE `Total_Votes` SET `yourcoulumnname`=? WHERE `team`=?";
                 PreparedStatement ps = con.prepareStatement(sql1);
                int v=votes+1;//votes got from previous select query add by 1 
                 ps.setInt(1,v);
                 ps.setString(2,"team1");
    
                 int i=0;
                  i = ps.executeUpdate();
    
             if(i>0){
                 System.out.println("updated");
               }
    

    希望这对你有帮助

    假设选择了
    team1
    单选按钮,现在您需要使用
    select
    查询来获取
    team1
    以前投票的值,如下所示:

       try {
                Class.forName("com.mysql.cj.jdbc.Driver");
              Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
        String sql="select votes from Total_Votes where team=?";
                         int votes=0;
                        PreparedStatement ps = con.prepareStatement(sql);
                       ps.setString(1,"team1");//passing team1 in query
                       rs = ps.executeQuery();
                        while(rs.next())
                       {
              votes=rs.getInt("yourcoulmnname");//getting value of coulmn where votes are stored for team1
                      }
                       }catch(Exception e)
                       {
                       System.out.println(e.getMessage());
                       }
    
    现在,使用
    update
    query更新投票,如下所示:

    String sql1 = "UPDATE `Total_Votes` SET `yourcoulumnname`=? WHERE `team`=?";
                 PreparedStatement ps = con.prepareStatement(sql1);
                int v=votes+1;//votes got from previous select query add by 1 
                 ps.setInt(1,v);
                 ps.setString(2,"team1");
    
                 int i=0;
                  i = ps.executeUpdate();
    
             if(i>0){
                 System.out.println("updated");
               }
    

    希望这对你有帮助

    它给你什么输出?你收到了什么错误?数据库中的最终值是什么?到目前为止,您尝试了什么?每当我选择一个选项并单击submit时,1会像投票一样插入到数据库的相应列中。我已经在db中将选项命名为列名。我希望每一次新的投票都是对其先前价值的补充。我已经提到了上面的代码,这就是我所尝试的far@ShashankkShekarChaturvedi提供更多细节作为对问题的编辑,而不是评论。它给了你什么输出?你收到了什么错误?数据库中的最终值是什么?到目前为止,您尝试了什么?每当我选择一个选项并单击submit时,1会像投票一样插入到数据库的相应列中。我已经在db中将选项命名为列名。我希望每一次新的投票都是对其先前价值的补充。我已经提到了上面的代码,这就是我所尝试的far@ShashankkShekarChaturvedi提供更多细节,作为对问题的编辑,而不是评论。