C# 将唯一标识符作为参数传递给SQL查询函数

C# 将唯一标识符作为参数传递给SQL查询函数,c#,sql-server,C#,Sql Server,这是我的“SQL”查询,必须将“UserId”作为唯一标识符传递给查询中的“where”子句 SELECT aspnet_Roles.RoleName, aspnet_Roles.Description FROM aspnet_Roles INNER JOIN aspnet_UsersInRoles ON aspnet_Roles.RoleId = aspnet_UsersInRoles.RoleId INNER JOIN aspnet_Users ON aspnet_Us

这是我的“SQL”查询,必须将“UserId”作为唯一标识符传递给查询中的“where”子句

SELECT aspnet_Roles.RoleName, aspnet_Roles.Description
FROM aspnet_Roles INNER JOIN
     aspnet_UsersInRoles ON aspnet_Roles.RoleId =  aspnet_UsersInRoles.RoleId INNER JOIN
     aspnet_Users ON aspnet_UsersInRoles.UserId = aspnet_Users.UserId
WHERE (aspnet_Users.UserId = @param)
我想传递参数的C代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlTypes;

public partial class Forms_RolesMgt_RoleList_Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {

    if (!this.IsPostBack)
    {
        DSRolesTableAdapters.aspnet_RoleUsersTableAdapter userRoleAdapter = new DSRolesTableAdapters.aspnet_RoleUsersTableAdapter();
        DataTable dt = new DataTable();
        Guid user = Guid.NewGuid();
        user = Guid.Parse(Session["UserId"] as string);
        Response.Write(user);
        dt = userRoleAdapter.GetDataByUserId(user);//At this line i am passing the parameter and getting the error
        UserRolesGrdView.DataSource = dt;
        UserRolesGrdView.DataBind(); 
    }
  }
}
运行时出错:无法启用约束。一个或多个行包含违反非空、唯一或外键约束的值

按查询预览数据时.xsd文件中的错误为:未能将参数值字符串转换为Guid


我哪里出错了?

在您的情况下,应该使用存储过程

CREATE PROCEDURE [dbo].[Name]  
(@param uniqueidentifier
)
AS 
BEGIN
    SELECT aspnet_Roles.RoleName, aspnet_Roles.Description
    FROM aspnet_Roles INNER JOIN
    aspnet_UsersInRoles ON aspnet_Roles.RoleId = aspnet_UsersInRoles.RoleId INNER JOIN
    aspnet_Users ON aspnet_UsersInRoles.UserId = aspnet_Users.UserId
    WHERE (aspnet_Users.UserId = @param)
END
并在GetDataByUserId()方法中为sp添加参数,如下所示:

command.Parameters.Add("@param",SqlDbType.UniqueIdentifier).Value=userId;

无法将参数值字符串转换为Guid
。如何将参数传递给Sql命令?同时添加该代码。请显示函数的代码
GetDataByUserId
?GetDataByUserId是上面提到的sql查询@sachin您可能会在代码中包含名为
GetDataByUserId
的c函数。我想看看代码,而不是查询。我想看看你是如何将参数
@param
传递给查询的。你似乎已经在这里提出了这个问题,并且也接受了解决方案。