Обновление в GridView «Не задано значение для одного или нескольких параметров» - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть этот код (ниже), и я получаю следующую ошибку:

Не указано значение для одного или нескольких параметров

Но при повторном запуске значения отображаются обновленными для «RateCenterName», «QuantityThreshold», «RateCenterID», но не для «Province»

код:

string updateSql = "UPDATE RateCenters SET RateCenterName = ?, Province=?, QuantityThreshold = ?" + " WHERE RateCenterID= ?";     

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{                    
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
    DropDownList ddl = (DropDownList)row.FindControl("DropDownList2"); // assigning the dropdownlist item to 'ddl'
    TextBox rateCenterName = (TextBox)row.FindControl("txtRateCenterName"); // assigning textbox input item
    TextBox quantityThreshold = (TextBox)row.FindControl("txtQuantityThreshold"); // assigning textbox input item
    Label ratecenterid = (Label)row.FindControl("Label1"); // assigning the label value
    //OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString());
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\arjun.giridhar\My Documents\Visual Studio 2010\Projects\BillingApplicationNew\BillingApplicationNew\App_Data\db1.mdb;Persist Security Info=False");
    OleDbCommand cmd = null;            
    try
    {
        cmd = new OleDbCommand(updateSql, conn);

        cmd.Parameters.Add("@RateCenterName", OleDbType.VarChar).Value = rateCenterName.Text;
        cmd.Parameters.Add("@Province", OleDbType.VarChar).Value = ddl.SelectedItem.Text;
        cmd.Parameters.Add("@QuantityThreshold", OleDbType.Integer).Value = Convert.ToUInt32(quantityThreshold.Text);
        cmd.Parameters.Add("@RateCenterID", OleDbType.Integer).Value = Convert.ToInt32(ratecenterid.Text);

        conn.Open();
        cmd.Connection = conn;
        cmd.ExecuteNonQuery();

        //GridView1.EditIndex = -1; //refreshing
        //GridView1.DataBind();
    }
    catch (OleDbException ex)
    {
        throw (ex);
    }
    finally
    {
        conn.Close();
        conn.Dispose();
    }
}

Кто-нибудь может увидеть, что не так?

Редактор модератора:

Он решил проблему, но его решение глубоко внутри одной из тем комментариев:

Я понял, я удалил событие обновления строки и просто попробовал один раз снова без добавления этого события.

Я думаю он имеет в виду: он взял этот код из обработчика событий RowUpdating и поместил его в другое место.

Ответы [ 4 ]

0 голосов
/ 24 февраля 2012

Наиболее вероятная проблема - передать нулевое значение либо RateCenterName, либо Province.

Что произойдет, если вы попробуете это:

cmd.Parameters.Add("@RateCenterName", OleDbType.VarChar).Value = "rateCenter";
cmd.Parameters.Add("@Province", OleDbType.VarChar).Value = "ddl";
cmd.Parameters.Add("@QuantityThreshold", OleDbType.Integer).Value = 0;
cmd.Parameters.Add("@RateCenterID", OleDbType.Integer).Value = 1;
0 голосов
/ 23 февраля 2012

У вас отсутствует пробел до WHERE при сборке SQL.
Строка 2 в вашем примере кода.

0 голосов
/ 24 февраля 2012
"WHERE RateCenterID= @RateCenterID"; // this the error. you need to provide space before where  

вам нужно добавить пробел перед Куда.

это вы должны попробовать

string updateSql = "UPDATE RateCenters SET RateCenterName = @RateCenterName, Province= 
@Province, QuantityThreshold = @QuantityThreshold" + " WHERE RateCenterID= @RateCenterID";     
0 голосов
/ 23 февраля 2012

в вашем коде может быть проблема, потому что вы пытаетесь редактировать базу данных доступа и пишете код sqldatabase ....

Вы обновляете код оператора

string updateSql = "UPDATE RateCenters SET RateCenterName =?, Province=? ,
           QuantityThreshold = ? WHERE RateCenterID= ?";
            using (OleDbConnection con = new OleDbConnection(scon))
            {
                using (OleDbCommand cmd = new OleDbCommand(str, con))
                {

                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("RateCenterName", str2);
                    cmd.Parameters.AddWithValue("Province", str3);
                    cmd.Parameters.AddWithValue("QuantityThreshold ", str4);
                    cmd.Parameters.AddWithValue("RateCenterID", str5);


                    con.Open();
                    cmd.ExecuteNonQuery();
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...