参数没有默认值
我有一个代码在下面,这段代码更新gridview中的下拉列表。该数据库在MS Access 我收到错误:“参数@RateCenterName没有默认值”。参数没有默认值
RateCenterID是主键
string updateSql = "UPDATE [RateCenters] " + "SET [RateCenterName] = @RateCenterName, [Province]= @Province, [QuantityThreshold] [email protected] " + "WHERE [RateCenterID][email protected]";
string ratecenterID;
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
DropDownList ddl = (DropDownList)row.FindControl("DropDownList2");
TextBox rateCenterName = (TextBox)row.FindControl("TextBox1");
TextBox quantityThreshold = (TextBox)row.FindControl("TextBox2");
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString());
OleDbCommand cmd = null;
try
{
conn.Open();
cmd = new OleDbCommand(updateSql, conn);
cmd.Parameters.Add("@RateCenterName", OleDbType.VarChar).Value = rateCenterName.Text;
cmd.Parameters.Add("@Province", OleDbType.VarChar).Value = ddl.SelectedValue;
cmd.Parameters.Add("@QuantityThreshold", OleDbType.VarChar).Value = quantityThreshold.Text;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
GridView1.EditIndex = -1;
GridView1.DataBind();
}
catch (OleDbException ex)
{
throw (ex);
}
finally
{
cmd.Dispose();
conn.Close();
conn.Dispose();
}
}
请帮我解决这个问题。
问候,
阿琼
您的查询有四个参数(@RateCenterName
,@Province
,@QuantityThreshold
和@RateCenterID
),但你只能传递三个。
@RateCenterID
缺失。
您忘记了where语句中正在使用的RateCenterID参数。
希望它可以帮助
cmd.Parameters.Add(“@ RateCenterID”,OleDbType.VarChar).Value = ??? – 2012-02-22 10:18:35
你应该通过@RateCenterID
也。
cmd.Parameters.Add(“@ RateCenterID”,OleDbType.VarChar).Value = ??? – 2012-02-22 10:19:42
'rateCenterId'。但是,这将是一个变量,你当然必须先创建(大概在'TextBox rateCenterName'的行)。 – 2012-02-22 10:21:22
您忘记为@RateCenterID添加值。
cmd.Parameters.Add(“@ RateCenterID”,OleDbType.VarChar).Value = ??? – 2012-02-22 10:19:24
这就是你必须知道的;-)也许你只是想省略查询的最后一部分...... – Matthias 2012-02-22 10:21:58
当然,这将覆盖3列的* all *行具有相同的值:) – 2012-02-22 10:28:34
您已声明四个参数,但您只添加了三个。
您忘记了添加@RateCenterID
参数。
谢谢,但cmd.Parameters.Add(“@ RateCenterID”,OleDbType.VarChar).Value = ??? – 2012-02-22 10:20:20
+1发布第一个答案:-) – Matthias 2012-02-22 10:16:55
是弗雷德里克但cmd.Parameters.Add(“@ RateCenterID”,OleDbType.VarChar).Value = ??? – 2012-02-22 10:18:56
那么,您应该知道该参数需要传递什么,因为它代表了您尝试匹配的费率中心......我无法告诉您从用户输入中获取该值的位置? – 2012-02-22 10:21:23