0

我的表单参数没有将数据加载到控制器中,我在控制台中收到此消息:

INSERT INTO Products (code, cateogyr_code, product_category, product_name, description, price) VALUES ('0','0','null','null','null')'0.0')

表格如下:

    <form action="controller" method="POST">
<input type="hidden" name="action" value="add">
<table>
<tr><td>Code</td><td><input name="code"></td></tr> 
<tr><td>Name</td><td><input name="product_name"></td></tr>
<tr><td>Category Code</td><td><input name="category_code"></td></tr> 
<tr><td>Category</td><td><input name="product_category"></td></tr> 
<tr><td>Description</td><td><input name="description"></td></tr>
<tr><td>Price</td><td><input name="price" ></td></tr>
<tr><td colspan="2"><input type="submit" value="Save"></td></tr> </table> </form>

这是我的控制器方法:

  else if (action.equals("add")) {
            Product newProduct= new Product();

            dao.addProduct(newProduct);

              List<Product> products = dao.findAll();
              address = "listproduct.jsp";
              request.setAttribute("products", products);;

这是我的 sql 方法

public void addProduct(Product product) {
    String sql = "INSERT INTO Products " +
            "(code, category_code, product_category, product_name, description, price)" +
            " VALUES (" +
            "'" + product.getCode() + "'," +
            "'" + product.getCategory_code() + "'," +
            "'" + product.getCategory() + "'," +
            "'" + product.getName() + "'," +
            "'" + product.getDescription() + "')"+
            "'" + product.getPrice() + "')";
    System.out.println(sql);
        }

有人可以帮助我吗?

4

3 回答 3

1

这不是正确的插入方式

INSERT INTO Products (code, cateogyr_code, product_category, product_name, description, price) VALUES ('0','0','null','null','null')'0.0')

假设所有字段都是 varchar 使用这种方式

INSERT INTO Products (code, cateogyr_code, product_category, product_name, description, price) VALUES ('0','0','null','null','null','0.0')
于 2013-09-10T04:46:12.307 回答
0

第一个错误出现在您的插入语句中。将其更改为:

String sql = "INSERT INTO Products " +
        "(code, category_code, product_category, product_name, description, price)" +
        " VALUES (" +
        "'" + product.getCode() + "'," +
        "'" + product.getCategory_code() + "'," +
        "'" + product.getCategory() + "'," +
        "'" + product.getName() + "'," +
        "'" + product.getDescription() + "'," +
        "'" + product.getPrice() + "')";

add每次单击按钮时,您都在创建新的产品对象。

Product newProduct= new Product(); // This cause you a problem.

new Product()语句创建产品的新对象,其中所有变量值都设置为默认值。也就是说,设置了 code = 0、cateogyr_code = 0、product_category = null、product_name = null、description = null、price = 0 的值。

解决方案:在 Product 类中定义一个包含所有参数的构造函数,或者找到一些其他方法来在你的 arraylist 中设置 Product 对象。

于 2013-09-10T04:49:25.710 回答
0

当您编写字符串数据类型的插入方法时,您应该像这样编写单个代码“'\”而不是“'”。

于 2013-09-26T04:57:08.637 回答