必须为“roleid”声明标量变量 [英] Must declare the scalar variable for "roleid"

查看:122
本文介绍了必须为“roleid”声明标量变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此roleid从数据库表调用,其字段为RoleID,RoleName,ModifiedBY,ModifiedDate



其中所有字段都在调用但在行RoleID中出错在更新语句asp.net项目中。我会分享你的代码请帮帮我



我尝试过的事情:



 //获取GridView的RowIndex 
// GridViewRow gvRow =(GridViewRow)(发送者作为Control).Parent.Parent;
int index = row.RowIndex;
Guid roleId =(Guid)(gvRoleListDispaly.DataKeys [index] .Value);

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

//命令语句
SqlCommand cmd1 = new SqlCommand(从Security_Roles中选择RoleID,其中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();
//使用更新命令
(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
//如果UserID的值为Null,则ModifiedBy值将为Null
//否则ModifiedBy字段值将为创建它的用户。
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();

解决方案

这可能是因为您已将RoleId参数添加到另一个命令对象而不是您正在执行 UPDATE 命令的命令对象。

 cmd1.Parameters.Add(  @ RoleID,SqlDbType。唯一标识符); 
cmd1.Parameters [ @ RoleID]。Value = new Guid(roleId.ToString());



将其更改为以下内容 -

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





希望,它有帮助:)


This roleid is calling from the database table having fields RoleID, RoleName, ModifiedBY, ModifiedDate

In which all the fields are calling but getting error in the line RoleID in update statement asp.net project. I will share you the code please help me

What I have tried:

// 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();
        }
    }
}



Getting error at cmd.ExecuteNonQuery();

解决方案

That's probably because you have added RoleId parameter to another command object than the one you are using executing UPDATE command.

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


Change it to following-

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



Hope, it helps :)


这篇关于必须为“roleid”声明标量变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆