在添加数据的时候总显示添加失败不知道为什么
这是servlet的
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String name = request.getParameter("name");
//int price = Integer.parseInt(request.getParameter("price"));
String priceParam = request.getParameter("price");
int price = 0; // 默认值或错误情况下的处理值
try {
if (priceParam != null && !priceParam.isEmpty()) {
price = Integer.parseInt(priceParam);
}
} catch (NumberFormatException e) {
}
String kind = request.getParameter("kind");
String provider = request.getParameter("provider");
String numParam = request.getParameter("num");
int num = 0; // 默认值或错误情况下的处理值
try {
if (numParam != null && !numParam.isEmpty()) {
num = Integer.parseInt(numParam);
}
} catch (NumberFormatException e) {
// 处理无法解析为整数的情况,例如给出默认值或错误提示
// num = 默认值;
// 输出错误信息或返回给前端的错误提示
}
Goods goods= new Goods();
goods.setId(id);
goods.setName(name);
goods.setPrice(price);
goods.setKind(kind);
goods.setProvider(provider);
goods.setNum(num);
int result = 0;
try {
result = dao.Add(goods);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if ( result ==1) {
request.setAttribute("message", "添加成功");
request.getRequestDispatcher("AdminView.jsp").forward(request, response);
} else {
request.setAttribute("message", "添加失败");
request.getRequestDispatcher("AdminAdd.jsp").forward(request, response);
}
}
这是dao层的添加数据方法
```java
public int Add(Goods goods) throws Exception {
int i = 0;
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con = CnUtil.GetCon();
String sql = "insert into goods(id,name,price,kind,provider,num) values(?,?,?,?,?,?)";
st = con.prepareStatement(sql);
st.setString(1, goods.getId());
st.setString(2, goods.getName());
st.setInt(3, goods.getPrice());
st.setString(4, goods.getKind());
st.setString(5, goods.getProvider());
st.setInt(5, goods.getNum());
i = st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
CnUtil.closeResource(con, st, rs);
}
return i;
}
```
服务器端的问题,一般和网络问题挂钩,重新启动试试
你在可以在添加数据的位置打个断点,然后进行debug调试,去调试就能找到添加失败的原因了
在这个地方写个输出goods.toString()看看你新增的数据goods内部各个属性具体是什么样的,尤其注意一下属性id的值,看看是不是和数据库中的id重复了,如果id在数据库中是主键那估计插入不进去呢,就先输出看看,查看这个初步的问题是什么,还有可能是你这个id如果是自增那就id对应的sql语句的?可以改成null试试,程序是个精细活,实在不会我帮你远程教你解决这问题
不知道你这个问题是否已经解决, 如果还没有解决的话:package com.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.domain.Product;
import com.utils.DataSourceUtils;
public class ProductDao {
public int getTotalRecords() throws SQLException {
//创建QuertyRunner
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
// 编写sql语句
String sql = "select count(*) from product";
// 执行sql
return ((Long)qr.query(sql, new ScalarHandler())).intValue();
}
public List findAll(int startIndex, int pageSize) throws SQLException {
// 创建QuertyRunner
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
// 编写sql语句
String sql = "select * from product limit ?,?";
//为占位符赋值
Object[] params = {startIndex,pageSize};
// 执行sql
return qr.query(sql, new BeanListHandler<>(Product.class), params);
}
}