【问题标题】:Inserting into database from input by clicking a button通过单击按钮从输入插入数据库
【发布时间】:2018-06-12 10:30:07
【问题描述】:

我已经完成了整个编码,但数据没有插入数据库中

Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection connection = 
        DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/userinfo?user=root&password=admin");
       Statement statement = connection.createStatement() ;
        resultset = statement.executeQuery("select * from item") ;

现在这是我完成连接的部分,我认为这没关系,因为在第一部分我显示数据库中的值它正在工作

现在我已经在下一部分中完成了这项工作,我已经从输入框中获取了输入值

   <input type="submit" value="RECEIVE"  style="width:100px; height:40px" 
     name="receive ">

现在

   PrintWriter pw = response.getWriter();
    PreparedStatement pst = null;
    if(request.getParameter("receive")!=null)
    {
    String dob=request.getParameter("datepicker");
    String supplier=request.getParameter("supplier");
    String type=request.getParameter("type");
    String quantity=request.getParameter("quantity");
    String queryString = "INSERT INTO stock_quantity values(?,?,?,?)";
      pst  = connection.prepareStatement(queryString);
      pst.setString(2,dob);      
      pst.setString(3,supplier);
      pst.setString(4,type);
       pst.setString(5,quantity);
      int i = pst.executeUpdate();
      if(i!=0){
       %>
      <script language="javascript">
            alert("Send sucess");
      </script>
      <%    
   }
   else{
      %>
      <script language="javascript">
            alert("Enter all data");
      </script>
      <%    
   }
 }
 %>

数据没有插入..在代码中查找问题

【问题讨论】:

  • Java 不是 javascript
  • 不要在jsp中直接使用jdbc。了解 3 层架构
  • 我应该怎么做?...我想在单击接收按钮时插入数据...如果我将其重定向到另一个页面,那么我必须再次连接数据库,这可能会产生问题

标签: java mysql jsp


【解决方案1】:

不要在第一个控制器中与 db 建立连接(在你的情况下是在 jsp 中),只需将你的数据发送到另一个控制器,然后你就可以将它插入到 db 中。您可以使用 @Requestparam("param") 获取单个参数,或使用 @ModelAttribute("name") 获取整个 POJO 对象(您将拥有所有参数)。

所以你的 html 文件看起来像(在 thymeleaf 中)你需要将一些 thymeleaf 的东西更改为 jsp:

<form action="#" th:action="@{/save}" th:object="${yourObject}" method="post">
                        <div>
                            <label for="quantity">quantity:</label>
                            <input type="quantity" th:field="*{quantity}">
                        </div>

                        <button type="submit">Submit</button>
                    </form>

还有你的第二个控制器:

@PostMapping("save")
    public String reset(@ModelAttribute(value = "yourObject") YourPOJOClass request) {
    //save to DB
    }

如果要接受参数,而不是整个对象,请在 jsp/html 中添加 name 参数 例如:

                        <div>
                            <label for="quantity">quantity:</label>
                            <input type="quantity" th:field="*{quantity}" name="quantity">
                        </div>

在控制器中你可以像这样得到这个参数:

@PostMapping("save")
    public String reset(@RequestParam("quantity") String quantity)

【讨论】:

  • 我没有创建表单。我想这样做而不创建表单
  • 这只是一个例子,如果你想要一个按钮,发送请求只需使用:
  • 我可以在提交按钮操作中编写表单操作部分吗??
  • 我对此表示怀疑...但是您为什么不尝试呢?这比在这里问要花更少的时间...:P 表单内的按钮有什么问题?
  • 我用过这个,现在它可以工作了但是插入数据库的数据显示为null,null,...... 那说明我接受或插入有问题?
猜你喜欢
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2015-11-30
  • 2015-04-10
  • 1970-01-01
  • 2016-08-14
  • 2017-06-07
  • 1970-01-01
相关资源
最近更新 更多