java - 当 html post 上没有值传递到 Java Servlet 时,将值设置为 0

标签 java database servlets post

得到这段处理一些参数并将其写入数据库的代码:

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import java.sql.*;

public class QueryServlet extends HttpServlet {

    @Override
    public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException
    {
        String instId = req.getParameter("instId");
        String cartId = req.getParameter("cartId");
        String desc = req.getParameter("desc");
        String cost = req.getParameter("cost");
        String amount = req.getParameter("amount");
        String currency = req.getParameter("currency");
        String name = req.getParameter("name");
        String transId = req.getParameter("transId");
        String transStatus = req.getParameter("transStatus");
        String transTime = req.getParameter("transTime");
        String cardType = req.getParameter("cardType");
        Connection conn = null;
        PrintWriter out = res.getWriter();
        try {
            conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/orders", "root", "root");

            String sqlStr = "insert into orderdetails "
                + "values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            try (PreparedStatement stmt = conn.prepareStatement(sqlStr)) {
                stmt.setString(1, transId);
                stmt.setString(2, instId);
                stmt.setString(3, cartId);
                stmt.setString(4, desc);
                stmt.setString(5, cost);
                stmt.setString(6, amount);
                stmt.setString(7, currency);
                stmt.setString(8, name);
                stmt.setString(9, transStatus);
                stmt.setString(10, transTime);
                stmt.setString(11, cardType);
                int updateCount = stmt.executeUpdate();
                for (Enumeration<String> en = req.getParameterNames(); en.hasMoreElements();) {
                    String paramName = en.nextElement();
                    String paramValue = req.getParameter(paramName);
                }
            }
    } catch (SQLException ex) {
        ex.printStackTrace();
        }
    }
}

如果我传递帖子消息上的所有参数,数据库就会更新得很好。但是,如果我不传递其中一个参数,则不会将任何内容写入数据库。

您能否帮我更改它,以便如果参数不在帖子消息中,它将在数据库中将该值设置为 0 或 null?

感谢迄今为止提供的所有帮助。

最佳答案

对于 String 类型的参数值,如果参数不在 POST 方法中,则可以设置空 String 或 null。尝试对每个字段值使用三元运算符,

  String instId = req.getParameter("instId") == null ? "" : req.getParameter("instId");

关于java - 当 html post 上没有值传递到 Java Servlet 时,将值设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672796/

相关文章:

database - Postgresql - 每个人一个数据库,或每个客户一个数据库

java - 如何从多模块 Maven 项目中组装多个可执行 JAR

java - 如何正确引用具有缩写类名的 Spring 服务?

java "database is locked"SQL异常

c++ - 如何在 C++ 程序中使用 Redis?

jsf - jsf 注销后发生 session 启动事件?

java - 如何在 JUNG 图中强制执行自定义布局?

php - 按兰德订购不起作用

java - 验证 JAX-WS Web 服务中的凭据

java - RequestDispatcher.forward() 的树