C# 在添加数据时,会显示“;参数太少。预期1“;

C# 在添加数据时,会显示“;参数太少。预期1“;,c#,C#,问题是: 参数太少。预期1 这是我的数据库表: CustomerOrder[CustomerOrder(订单ID、ProdName、ProdPrice、订单数量、CatName、订单日期] 代码: 我建议您改用参数化查询,因为它可以防止Sql注入攻击 String SqlCommand = "insert into CUSTOMERORDER values (@OrderId, @ProdName,@ProdPrice,@OrderQty, @CatName,@OrderDate)"; SqlC

问题是:

参数太少。预期1

这是我的数据库表:

CustomerOrder[CustomerOrder(订单ID、ProdName、ProdPrice、订单数量、CatName、订单日期]

代码:


我建议您改用参数化查询,因为它可以防止Sql注入攻击

String SqlCommand = "insert into CUSTOMERORDER values (@OrderId, @ProdName,@ProdPrice,@OrderQty, @CatName,@OrderDate)";
SqlCommand cmd = new SqlCommand(SqlCommand , //ConnectionString);
cmd.CommandType = CommandType.Text;
conn.Open();
cmd.Parameters.AddWithValue("@OrderId", txtOrderCode.Text);
cmd.Parameters.AddWithValue("@ProdName", txtProdName.Text );
cmd.Parameters.AddWithValue("@ProdPrice", txtProdPrice.Text);
cmd.Parameters.AddWithValue("@OrderQty", txtOrderQty.Text);
cmd.Parameters.AddWithValue("@CatName", txtCatName.Text.Text);
cmd.Parameters.AddWithValue("@OrderDate", txtOrderDate.Text);


cmd.ExecuteNonQuery();
conn.Close();

阅读Sql注入攻击。这样做更容易、更干净,而且最重要的是更安全。此外,在运行Sql命令后查看代码时,您正在设置文本框值。

值之前缺少空格。
。代码易受Sql注入攻击。请放弃正在执行的所有操作,然后继续ead关于SQL注入和参数化查询。哪一行代码会导致该错误?此外,调用
Convert.ToString(txtProdName.Text)
没有意义。
txtProdName.Text
已经是字符串。
String SqlCommand = "insert into CUSTOMERORDER values (@OrderId, @ProdName,@ProdPrice,@OrderQty, @CatName,@OrderDate)";
SqlCommand cmd = new SqlCommand(SqlCommand , //ConnectionString);
cmd.CommandType = CommandType.Text;
conn.Open();
cmd.Parameters.AddWithValue("@OrderId", txtOrderCode.Text);
cmd.Parameters.AddWithValue("@ProdName", txtProdName.Text );
cmd.Parameters.AddWithValue("@ProdPrice", txtProdPrice.Text);
cmd.Parameters.AddWithValue("@OrderQty", txtOrderQty.Text);
cmd.Parameters.AddWithValue("@CatName", txtCatName.Text.Text);
cmd.Parameters.AddWithValue("@OrderDate", txtOrderDate.Text);


cmd.ExecuteNonQuery();
conn.Close();