2017-10-05 46 views
0

有一個類型爲BINARY的MySQL查詢參數。 MySQL中的二進制值可以表示爲x'1f7a8e'。但是,將類型MySqlDbType.Binary的參數添加到MySqlCommand時,將使用表示爲_binary '1f7a8e'的值形成查詢,從而導致查詢找不到該行。下面你可以看到一個關於如何使用MySQL API的代碼示例。MySQL BINARY類型表示

var baz = "1f7a8e"; 
var cmd = new MySqlCommand("SELECT foo FROM bar WHERE [email protected]"); 
cmd.Parameters.Add("@baz", MySqlDbType.Binary).Value = baz; 

// Execute query and read result 

什麼是使用二進制值作爲參數的正確方法是什麼?

+0

你嘗試'Stream'或'的byte []'? –

+0

這似乎是一個奇怪的設計和/或場景。如果你只是按照[這裏](https://stackoverflow.com/questions/16072709/converting-string-to-byte-array-in-c-sharp)將字符串轉換爲字節,它不起作用嗎? –

回答

0

我試圖將Guid作爲BINARY(16)存儲。

首先,我試着guid.ToByteArray()哪些沒有工作。然後我嘗試了guid.ToString().Replace("-", ""),這也失敗了。

感謝@ daniel-a-white然後我嘗試了guid.ToString().Replace("-", ""),然後將得到的十六進制數轉換成一個字節數組(如here所述)並且工作正常。

0

您可以存儲GUIDBinary (16)

UNHEX(REPLACE(@baz, "-","")) 

這將返回二進制(16)。

,並選擇

SELECT * FROM mytable WHERE HEX(baz) = @baz