问题与mysql和c#
有关我有一个存储过程,它返回查询的放置 该查询将列连接为第一列和其他单个列
当我以dt.rows [i] [0]的身份访问数据列时,它返回System.byte []
即使我尝试将其写入文件,但它始终在文件
中写为System.byte []我尝试使用将其转换为字节数组 byte [] b =(byte [])dt.Rows [i] [0];
它提供异常,因为无法将字符串转换为byte []
我尝试将所有值作为字符串添加到列表中,如
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[0].ToString());
}
将文件列表[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
答案 0 :(得分:0)
没有测试过代码,但希望你能得到这个代码。 将每个八位字节转换为数字并将数字转换为字符。
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;
}
}
答案 1 :(得分:0)
非常感谢您回复我的查询 可能提供的解决方案也可以工作,但我还没有测试过它
我找到了解决方案 而不是这种语言
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',强制转换(DATE(t5.InventoryDate)为char),强制转换(t5.SKUorItem为char))AS PK,t5.CustomerID,t5.entityID,t5.inventoryDate,t5.SKUorItem, t5.Category,t5.inventory FROM
转换会将日期和时间值或除字符串以外的任何值转换为char 所以mysql返回String而不是byte []
但再次感谢您的回复
问候 阿夫扎尔
答案 2 :(得分:0)
许多小时后,我创建了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);
}