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