我收到错误:
无法转换参数值 Int64到字节[]。
这是我正在做的......
我的数据库中有一个表格,其中包含以下列:
sessionid | binary(32) | null
当我分配给它时,我这样做:
user.LastActivityDate = DateTime.Now;
user.SessionId = user.LastActivityDate.ToBinary();
SessionId是接口的继承属性:
long? SessionId { get; set; }
在这里,我的用户类正在访问它:
[SettingsAllowAnonymous(false), CustomProviderData("SessionId;string")]
public long? SessionId { get { return base["SessionId"] as long?; } set { base["SessionId"] = value; } }
在我的自定义配置文件提供程序中,以下命令指定值:
sqlCommand.Parameters.Add("sessionid", SqlDbType.Binary, 32).Value = settingsPropertyValue.PropertyValue;
当“sqlCommand.ExecuteNonQuery()”命令执行存储的更新时 使用参数:
执行过程@sessionid binary(32)
结果是错误:
“无法转换参数值 从Int64到Byte []。“
我试过了:
有什么想法吗?感谢。
答案 0 :(得分:0)
SqlDbType.Binary
不正确(当你添加参数时) - 这是任意长度的扩展二进制数据。您只想将其表示为64位整数,即SqlDbType.BigInt
。
顺便问一下,你为什么要这样做呢? SQL有一个日期时间类型;你可以像那样存放它。
(你可以用相反的,反常的方式来解决这个问题,而是将长数据转换成8字节的数组并传递它,但是没有想象的理由你想以这种方式存储它。)
答案 1 :(得分:0)
ToBinary
没有按照您的想法行事。
DateTime.ToBinary
方法返回long
值,而不是字节数组。
你想做什么?
如果您尝试存储日期时间,则应使用DataTime列。
如果您确实需要字节数组,请提供更多详细信息。