我想從URL中獲取一個查詢字符串並將它發送到MSSQL中的存儲過程。查詢字符串是varbinary類型,當我嘗試發送它時,我的應用程序正在拋出異常。我還想返回存儲過程底部的select語句,它只是說Select 'Processed'
輸入到SQL存儲過程
回答
不得不實際創建函數來分析十六進制代碼,然後將其發送到數據庫
static byte[] ParseHexString(string value)
{
if (string.IsNullOrEmpty(value)) return null;
if (1 == (1 & value.Length)) throw new ArgumentException("Invalid length for a hex string.", "value");
int startIndex = 0;
int length = value.Length;
char[] input = value.ToCharArray();
if ('0' == input[0] && 'x' == input[1])
{
if (2 == length) return null;
startIndex = 2;
length -= 2;
}
Func<char, byte> charToWord = c =>
{
if ('0' <= c && c <= '9') return (byte)(c - '0');
if ('A' <= c && c <= 'F') return (byte)(10 + c - 'A');
if ('a' <= c && c <= 'f') return (byte)(10 + c - 'a');
throw new ArgumentException("Invalid character for a hex string.", "value");
};
byte[] result = new byte[length >> 1];
for (int index = 0, i = startIndex; index < result.Length; index++, i += 2)
{
byte w1 = charToWord(input[i]);
byte w2 = charToWord(input[i + 1]);
result[index] = (byte)((w1 << 4) + w2);
}
return result;
}
不應該爲二進制發送一個字節數組(byte[]
)嗎?我不認爲它會接受純字符串。嘗試使用System.Text.Encoding.UTF8.GetBytes
方法將其轉換爲字節數組。
UPDATE:這個問題的答案告訴編譯器使用二進制數據的一種特殊類型:What SqlDbType maps to varBinary(max)?
如果您想字節]類型,你可以用這個代碼試試,你不通過串
cmd.Parameters.Add("@dec", SqlDbType.VarBinary).Value = ;//Relpace with your new Byte[]
或者,如果你想字符串類型,你可以用字符串類型嘗試
cmd.Parameters.Add("@dec", SqlDbType.VarChar).Value = QS;//Your string
鏈接:http://msdn.microsoft.com/fr-fr/library/system.data.sqldbtype%28v=vs.80%29.aspx個
不知道你明白你想告訴我做 – Tim
如果你想傳遞字符串值,請嘗試:cmd.Parameters.Add( 「@dec」,SqlDbType.VarChar).Value = QS。如果你想使用VarBinary傳遞Byte []參數 –
Aghilas已經指定如何分配的值作爲字節數組,在第二行 並傳遞作爲中的常規方式值
- 1. 插入SQL存儲過程值到另一個存儲過程
- 2. 存儲過程CSV輸入
- 3. MySQL - 分解輸入到存儲過程
- 4. SQL注入存儲過程
- 5. SQL如果在存儲過程中輸入/輸入
- 6. SQL到存儲過程
- 7. SQL存儲過程到Lambda
- 8. 使用輸入和輸出參數執行SQL存儲過程
- 9. T-SQL存儲過程傳遞輸入,輸出採用
- 10. SQL Server存儲過程 - 輸出參數
- 11. SQL Server存儲過程參數輸出
- 12. 存儲過程。 T-SQL到PL/SQL
- 13. SQL存儲過程
- 14. 存儲過程/ SQL
- 15. SQL存儲過程
- 16. SQL存儲過程
- 17. SQL存儲過程
- 18. SQL存儲過程
- 19. 從SQL Server 2008輸出到C#通過ODBC存儲過程
- 20. 存儲過程輸入參數
- 21. mysql存儲過程輸入參數值
- 22. Oracle存儲過程的輸入參數
- 23. 存儲過程中的用戶輸入
- 24. 用於存儲過程的XML輸入
- 25. postgresql存儲過程輸入json解析
- 26. 存儲過程要求輸入空列
- 27. Refcusor作爲存儲過程的輸入
- 28. mysql存儲過程 - 驗證輸入xml
- 29. 存儲過程的數組輸入
- 30. SQL存儲過程加入問題
它拋出什麼異常? –
+ \t \t ServerVersion \t「con.ServerVersion」扔「System.InvalidOperationException」類型\t字符串{} System.InvalidOperationException的一個例外 – Tim