[英]Failed to convert parameter value from a Int64 to a Byte[]
我收到錯誤消息:
無法將參數值從Int64轉換為Byte []。
這是我在做什么...
我的數據庫中有一個帶有列的表:
sessionid | binary(32) | null
當我分配給它時,我這樣做:
user.LastActivityDate = DateTime.Now;
user.SessionId = user.LastActivityDate.ToBinary();
SessionId是從接口繼承的屬性:
long? SessionId { get; set; }
在我的User類中可以訪問它:
[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 []。
我努力了:
有任何想法嗎? 謝謝。
SqlDbType.Binary
是不正確的(添加參數時)-用於任意長度的擴展二進制數據。 您只想將其表示為64位整數,即SqlDbType.BigInt
。
順便說一句,為什么首先要這樣做? SQL具有日期時間類型; 您可以像這樣存儲它。
(您可以以相反的方式處理它,而是將long轉換為一個八字節的數組並將其傳遞,但是沒有可以想到的原因想要以這種方式存儲它。)
ToBinary
不執行您認為的操作。
DateTime.ToBinary
方法返回一個long
值,而不是字節數組。
你想做什么?
如果您要存儲日期時間,則應僅使用DataTime列。
如果您確實需要字節數組,請提供更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.