簡體   English   中英

datacolumn[row][0] 返回 system.byte 時如何以字符串形式查看

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

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