我搜索了整个网络。我想知道为什么这个简单的任务在C#中很难完成。
sqlcmd.Parameters.Add("@someid", System.Data.SqlDbType.UniqueIdentifier).Value =
string.IsNullOrEmpty(class.someid) ? System.Data.SqlTypes.SqlGuid.Null : new Guid(class.someid);
这会返回错误:
无法将参数值从字符串转换为guid
我的存储过程使用C#中继的参数更新表中的记录。
我想要做的是使用存储过程更新记录及其具有空值的特定列,该存储过程从带有guid
的C#传递guid
参数,有时值为null。这在C#中是否可行?
答案 0 :(得分:1)
你可以尝试一下:
sqlcmd.Parameters.Add("@someid", System.Data.SqlDbType.UniqueIdentifier).Value =
string.IsNullOrEmpty(class.someid) ? System.Guid.Empty : new Guid(class.someid);
如果铸造不起作用。并在您的表中确保此列是否允许null。
class.someid
具有构造函数的正确格式。
您可以查看此link以获得概述。
答案 1 :(得分:1)
如果我没有错,您的列ID
在数据库中的类型为Guid
,但您的参数是字符串。
您可以将参数转换为SqlGuid
command.Parameters.Add("@GuidParameter", SqlDbType.UniqueIdentifier).Value = new System.Data.SqlTypes.SqlGuid(YourGuid); //The value of @ID
链接:http://msdn.microsoft.com/fr-fr/library/system.data.sqltypes.sqlguid.aspx
还要在存储过程中尝试以下操作:
Declare @someid uniqueidentifier = null
声明可以为空的属性:
public Guid? column1;
分配Null:
column1 = null;