[英]How to view as string when datacolumn[row][0] return system.byte
問題與mysql和c#有關
我有一個存儲過程,它返回查詢的輸出該查詢已將列連接為第一列和其他單獨的列
當我以 dt.rows[i][0] 訪問數據列時,它返回為 System.byte[]
即使我試圖將它寫入文件,但它總是在文件中寫入 System.byte[]
我嘗試使用 byte[] b= (byte[])dt.Rows[i][0]; 將其轉換為字節數組;
它給出了異常,因為無法將字符串轉換為字節 []
我嘗試將所有值作為字符串添加到列表中
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[0].ToString());
}
並將 list[i] 寫入文件將 System.byte[] 寫入文件
任何想法如何克服這個問題
其他列可以正常訪問和顯示,只有第一列具有來自多列的串聯值時才會出現這種情況
像這樣
SELECT CONCAT ('390', DATE (t5.InventoryDate) ,t5.SKUorItem ) AS PK, t5.CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.Category, t5.inventory FROM
尚未測試代碼,但希望您能理解。 將每個八位字節轉換為一個數字並將該數字轉換為字符。
int character = 0;
int bitValue = 1;
int count = 0;
string result = "";
for (int i = row[0].Length - 1; i >= 0 ; i--)
{
character += row[0][i] * bitValue;
bitValue *= 2;
count++;
if(count == 7)
{
count = 0;
character= 0;
bitValue = 1;
result += (char) character;
}
}
非常感謝您回復我的查詢 可能提供的解決方案也可以使用,但我還沒有測試過
我找到了解決方案而不是這個短語
SELECT CONCAT ('390', DATE (t5.InventoryDate) ,t5.SKUorItem ) AS PK, t5.CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.Category, t5.inventory FROM
我是這樣修改的
SELECT CONCAT ('390', cast(DATE (t5.InventoryDate) as char) ,cast(t5.SKUorItem as char)) AS PK, t5.CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.Category , t5.inventory FROM
強制轉換將日期和時間值或字符串以外的任何值轉換為字符所以 mysql 返回字符串而不是字節[]
但再次感謝您的回復
問候阿夫扎爾
幾個小時后,我創建了 Encode 和 Serialize,這將返回一個字符串,其中包含您應用於 img 的 src。
string img_src = data.Rows[0].IsNull("PHOTO") ? string.Format("") : string.Format("data:image/jpeg;base64,{0}", data.Rows[0]["PHOTO"].EncodeAndSerialize().Replace("\"", ""));
public static string EncodeAndSerialize<T>(this T obj) where T : new()
{
var settings = new JsonSerializerSettings
{
ContractResolver = new HtmlEncodeResolver(),
Formatting = Newtonsoft.Json.Formatting.None
};
return JsonConvert.SerializeObject(obj, settings);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.