C#GUID和SQL Server Uniqueidentifier转换
我试图画一个google图表,我肯定是通过存储过程从我的SQL Server数据库获取数据,但是我在使用C#GUID和SQL Server Uniqueidentifier转换,c#,asp.net,sql-server,asp.net-mvc,C#,Asp.net,Sql Server,Asp.net Mvc,我试图画一个google图表,我肯定是通过存储过程从我的SQL Server数据库获取数据,但是我在使用UserID参数时遇到了困难,因为它是唯一的标识符。如果我使用activityID参数,它是一个int,那么一切都很好。您能指导我如何将我的用户ID唯一标识符转换为int吗 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[rpGetUserActivities] (--@Use
UserID
参数时遇到了困难,因为它是唯一的标识符。如果我使用activityID
参数,它是一个int
,那么一切都很好。您能指导我如何将我的用户ID
唯一标识符转换为int吗
存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[rpGetUserActivities]
(--@UserID uniqueidentifier, <----- I would like to use this
@ActivityID INT)
AS
BEGIN
SELECT
[UserID],
[ActivityID],
[Title],
[DateCreated]
FROM
[DB].[dbo].[DB_Activity]
WHERE
[DateCreated] IS NOT NULL
AND [ActivityID] = @ActivityID
-- [UserID] = @UserID <----- I would like to use this
END
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
ALTER过程[dbo].[rpGetUserActivities]
(-@UserID uniqueidentifier,name.ToLower()==objProperty.name.ToLower());
如果(!string.IsNullOrEmpty(columnname))
{
值=行[columnname].ToString();
如果(!string.IsNullOrEmpty(值))
{
if(Nullable.GetUnderlineType(objProperty.PropertyType)!=null)
{
value=row[columnname].ToString().Replace(“$”,”).Replace(“,”,”);
objProperty.SetValue(obj,Convert.ChangeType(value,Type.GetType(Nullable.getUnderlineType(objProperty.PropertyType.ToString())),null);
}
其他的
{
值=行[columnname].ToString();
SetValue(obj,Convert.ChangeType(value,Type.GetType(objProperty.PropertyType.ToString()),null);
}
}
}
}
返回obj;
}
捕获(例外情况除外)
{
返回obj;
}
}
///
///此构造函数用于从配置文件获取连接字符串
///
公共rpusersAction()
{
ConnectionString=ConfigurationManager.ConnectionString[“connName”].ToString();
}
///
///此方法用于获取所有用户
///
///
公共列表GetrpusersDetails()
{
List objrpusers=null;
objDB=新的SqlDatabase(ConnectionString);
使用(DbCommand objcmd=objDB.GetStoredProcCommand(“rpGetUsers”))
{
尝试
{
使用(DataTable DataTable=objDB.ExecuteDataSet(objcmd.Tables[0])
{
objrpusers=ConvertTo(数据表);
}
}
捕获(例外情况除外)
{
掷骰子;
返回null;
}
}
返回对象;
}
///
///此方法用于根据用户ID获取播放器记录
///
///我正在使用INT进行测试
公共列表rpGetUserActivities(Int16?ActivityID)
{
List objrpusersRecords=null;
objDB=新的SqlDatabase(ConnectionString);
使用(DbCommand objcmd=objDB.GetStoredProcCommand(“rpGetUserActivities”))
{
objDB.AddInParameter(objcmd,“@ActivityID”,DbType.Int64,ActivityID);
尝试
{
使用(DataTable DataTable=objDB.ExecuteDataSet(objcmd.Tables[0])
{
objrpusersRecords=ConvertTo(数据表);
}
}
捕获(例外情况除外)
{
掷骰子;
返回null;
}
}
返回OBJRPUSERS记录;
}
}
}
再次感谢你 您可以将唯一标识符转换为int。只需添加
UserId
参数作为唯一标识符即可
var userId = new Guid("96d5b379-7e1d-4dac-a6ba-1e50db561b04");
objDB.AddInParameter(objcmd, "@UserID", SqlDbType.UniqueIdentifier, userId);
在每次调用中,如果要传递新的GUID,则可以使用
var userID = Guid.NewGuid(); // Always returns a new GUID
objDB.AddInParameter(objcmd, "@UserID", SqlDbType.UniqueIdentifier, userId);
注意:GUID在空间和时间上总是唯一的谢谢,var userId=新GUID(“96d5b379-7e1d-4dac-a6ba-1e50db561b04”);没有,我只是提供了一个样品。您应该将参数作为Guid而不是字符串传递,以便将字符串作为Guid解析。
var userID = Guid.NewGuid(); // Always returns a new GUID
objDB.AddInParameter(objcmd, "@UserID", SqlDbType.UniqueIdentifier, userId);