C# 将唯一标识符作为参数传递给SQL查询函数
这是我的“SQL”查询,必须将“UserId”作为唯一标识符传递给查询中的“where”子句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
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
传递给查询的。你似乎已经在这里提出了这个问题,并且也接受了解决方案。