得到这段处理一些参数并将其写入数据库的代码:
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/