簡體   English   中英

錯誤在C#調用存儲過程中從'System.String'到'System.Byte []'的無效轉換

[英]Error Invalid cast from 'System.String' to 'System.Byte[]' in C# calling stored procedure

我有一個下拉列表,其中裝有SQL Server的varbinary(256)列。 我將此下拉列表中的選定值發送到存儲過程,但出現錯誤

從“ System.String”到“ System.Byte []”的無效轉換。

C#代碼正在調用運行此查詢的SP,以將名稱和ID返回到下拉列表。

SELECT staffID, sAMAccountName,  (sn + ', ' + givenName) AS fullName
FROM staff
WHERE deleteEmployee = 'no' AND recordType = 'staff'
ORDER BY sn

我添加如下參數。

objCmd.Parameters.Add("@staffID", SqlDbType.Binary).Value = ddl_staff.SelectedItem.Value;

如果我進入SQL並執行如下所示的SP,我將獲得預期的結果。

DECLARE @staffID varbinary(256)
SELECT @staffID = staffID from staff where samaccountname = 'johndoe'
EXECUTE stp_nho_status @staffID

當數據由asp.net頁運行時,該怎么辦? 是否將其轉換為dropdownlist值中的字符串? 我是否必須以某種方式進行轉換?

您可能考慮編寫一種將string轉換為byte[] (可以將其轉換為SqlDbType.VarBinary ):

public static byte[] StrToByteArray(string value)
{
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
    return encoding.GetBytes(value);
}

然后您可以像這樣使用它:

objCmd.Parameters.Add("@staffID", SqlDbType.VarBinary).Value = 
    StrToByteArray(ddl_staff.SelectedItem.Value);

暫無
暫無

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

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