Member 8583441 Ответов: 1

Необходимо объявить скалярную переменную для "roleid"


Этот roleid вызывается из таблицы базы данных, имеющей поля RoleID, RoleName, ModifiedBY, ModifiedDate

В котором все поля вызываются, но получают ошибку в строке RoleID в инструкции update asp.net проект. Я поделюсь с вами кодом пожалуйста помогите мне

Что я уже пробовал:

// Getting RowIndex of GridView
//GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent;
int index = row.RowIndex;
Guid roleId = (Guid)(gvRoleListDispaly.DataKeys[index].Value);

con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
con.Open();

// Command Statement
SqlCommand cmd1 = new SqlCommand("select RoleID from Security_Roles where RoleID=@RoleID", con);

// RoleID
cmd1.Parameters.Add("@RoleID", SqlDbType.UniqueIdentifier);
cmd1.Parameters["@RoleID"].Value = new Guid(roleId.ToString());

sdr = cmd1.ExecuteReader();            

while (sdr.Read())
{
    if (sdr["RoleID"].ToString() == roleId.ToString())
    {
        sdr.Close();
        // Update Command
        using (cmd = new SqlCommand("UPDATE Security_Roles SET RoleName=@RoleName, RoleID=@RoleID, ModifiedBy=@ModifiedBy, ModifiedOn=@ModifiedOn where RoleID=@RoleID", con))
        {
            // RoleName
            cmd.Parameters.Add("@RoleName", SqlDbType.VarChar, 50);
            cmd.Parameters["@RoleName"].Value = roleName;

            // RoleID
            cmd1.Parameters.Add("@RoleID", SqlDbType.UniqueIdentifier);
            cmd1.Parameters["@RoleID"].Value = new Guid(roleId.ToString());

            // ModifiedBy
            // If the value of UserID is Null then ModifiedBy value will be Null
            // Otherwise ModifiedBy field value will be User who creates it.
            string modifiedBy = userID == Guid.Empty ? null : userID.ToString();
            cmd.Parameters.Add("@ModifiedBy", SqlDbType.UniqueIdentifier);
            cmd.Parameters["@ModifiedBy"].Value = new Guid(modifiedBy.ToString());

            // ModifiedOn
            cmd.Parameters.Add("@ModifiedOn", SqlDbType.DateTime);
            cmd.Parameters["@ModifiedOn"].Value = date;

            cmd.ExecuteNonQuery();
        }
    }
}


Получение ошибки в cmd.Метод executenonquery();

1 Ответов

Рейтинг:
9

Suvendu Shekhar Giri

Вероятно, это связано с тем, что вы добавили параметр RoleId в другой объект команды, отличный от того, который вы используете при выполнении ОБНОВЛЕНИЕ команда.

cmd1.Parameters.Add("@RoleID", SqlDbType.UniqueIdentifier);
cmd1.Parameters["@RoleID"].Value = new Guid(roleId.ToString());

Измените его на следующий-
cmd.Parameters.Add("@RoleID", SqlDbType.UniqueIdentifier);
cmd.Parameters["@RoleID"].Value = new Guid(roleId.ToString());


Надеюсь, это поможет :)


Member 8583441

Я уже пробовал то же самое но безрезультатно

Member 8583441

Спасибо, я получил ответ..... Моя ошибка в самой этой строке снова спасибо за исправление этой строки я приму этот ответ

Member 8583441

Мой ответ удовлетворен, но появляется еще одна ошибка: "недопустимая попытка вызвать Read, когда reader закрыт." Но я также удалил метод line sdr.close (), но безрезультатно.... Та же ошибка

Member 8583441

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