簡體   English   中英

無法將參數值從Int64轉換為Byte []

[英]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 []。

我努力了:

  1. ... = Convert.ToByte(settingsPropertyValue.PropertyValue);
  2. ... = Convert.ToInt64(settingsPropertyValue.PropertyValue);

有任何想法嗎? 謝謝。

SqlDbType.Binary是不正確的(添加參數時)-用於任意長度的擴展二進制數據。 您只想將其表示為64位整數,即SqlDbType.BigInt

順便說一句,為什么首先要這樣做? SQL具有日期時間類型; 您可以像這樣存儲它。

(您可以以相反的方式處理它,而是將long轉換為一個八字節的數組並將其傳遞,但​​是沒有可以想到的原因想要以這種方式存儲它。)

ToBinary不執行您認為的操作。

DateTime.ToBinary方法返回一個long值,而不是字節數組。

你想做什么?

如果您要存儲日期時間,則應僅使用DataTime列。

如果您確實需要字節數組,請提供更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM