当数据列[行][0] 返回 system.byte 时如何查看为字符串
本文关键字:字符串 何查看 byte 返回 数据 system | 更新日期: 2023-09-27 17:56:24
问题与mysql和c#有关
我有一个返回查询输出的存储过程查询将列串联为第一列和其他单个列
当我以 dt.rows[i][0] 访问数据列时,它返回为 System.byte[]
即使我试图将其写入文件,但它总是在文件中写入 System.byte[]
我尝试使用byte[] b= (byte[])dt.行[i][0];
它给出了异常,因为无法将字符串转换为字节[]
我试图将所有值作为字符串添加到列表中,例如
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[0].ToString());
}
将列表[i]写入文件将System.byte[]写入文件
任何想法如何克服这个问题
其他列被正常访问和显示,只有第一列具有来自多个列的 cancatations 值才如此
喜欢这个
选择"通信"("390",日期 (t5.库存日期) ,t5.作为 PK, T5.CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.类别,t5.库存来自
尚未测试代码,但希望您能获得 ideea。将每个八位字节转换为一个数字,并将该数字转换为字符。
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;
}
}
非常感谢您回复我的查询可能提供的解决方案也可以工作,但我还没有测试过
我找到了解决方案,因为而不是这个 phraze
选择"通信"("390",日期 (t5.库存日期) ,t5.SKUorItem ) 作为 PK,t5。CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.类别,t5.库存来自
我像这样修改了它
选择"康卡特"("390",投射(日期 (t5.库存日期)作为字符),投射(t5.SKUorItem as char)) AS PK, t5.CustomerID, t5.entityID, t5.inventoryDate, t5.SKUorItem, t5.类别,t5.库存来自
强制转换将日期和时间值或字符串以外的任何值转换为字符所以 mysql 返回字符串而不是字节[]
但再次感谢您的回复
问候阿夫扎尔
几个小时后,我创建了编码和序列化,这将返回一个字符串,其中包含您应用于 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);
}