读取XML中图片保存到DATASET中后插入数据库不显示的有关问题
读取XML中图片保存到DATASET中后插入数据库不显示的问题
因为工作需要,我从数据库中读取某一个表的信息并保存到XML文件中,其中有个字段是BLOB,存放图片,此时数据表中图片是正常显示的
保存到XML部分代码如下:
现在需要读取该XML中的内容,保存到dataset中并插入到ORACLE数据库中
读取XML部分代码如下:
上面的两个过程都没问题,现在就是插入的时候出问题了,其他的字段都能写入到数据库,只有BLOB类型的写入数据库有问题
但我查看数据库时,发现图片的列对应的图是黑色的,我觉得是转换的过程出的错,不知道具体错误在哪
请大家帮帮忙啊!!
------解决思路----------------------
还有,最好不要把整个图片文件的二进制数据都存到xml里
你完全可以保存成图片,然后xml里存个路径
因为工作需要,我从数据库中读取某一个表的信息并保存到XML文件中,其中有个字段是BLOB,存放图片,此时数据表中图片是正常显示的
保存到XML部分代码如下:
MemoryStream ms = new MemoryStream();
XmlTextWriter writer = null;
writer = new XmlTextWriter(ms, Encoding.Unicode);
ds.WriteXml(writer);
int count = (int)ms.Length;
byte[] arr = new byte[count];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(arr, 0, count);
UnicodeEncoding utf = new UnicodeEncoding();
StreamWriter sw = new StreamWriter(PathFile);
sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sw.WriteLine(utf.GetString(arr).Trim());
sw.Close();
.........省略
现在需要读取该XML中的内容,保存到dataset中并插入到ORACLE数据库中
读取XML部分代码如下:
StringReader ms = null;
XmlTextReader reader = null;
XmlDocument xmld = new XmlDocument();
xmld.Load(PathFile);
DataSet ds = new DataSet();
ms = new StringReader(xmld.InnerXml);
reader = new XmlTextReader(ms);
ds.ReadXml(reader);
//................
return ds;
上面的两个过程都没问题,现在就是插入的时候出问题了,其他的字段都能写入到数据库,只有BLOB类型的写入数据库有问题
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Columns.Contains("char"))
{
cmd.Parameters.Add("char", OracleType.VarChar).Value = ds.Tables[0].Rows[i][0];
}
if (ds.Tables[0].Columns.Contains("blob"))
{
string str = ds.Tables[0].Rows[i][1].ToString();//现将ds中的图片对应的内容转成 string
byte[] bytes = Encoding.UTF8.GetBytes(str);//再转成字节数组
cmd.Parameters.Add("blob", OracleType.Blob).Value = bytes;
}
cmd.ExecuteNonQuery();
cmd.Dispose();
}
但我查看数据库时,发现图片的列对应的图是黑色的,我觉得是转换的过程出的错,不知道具体错误在哪
请大家帮帮忙啊!!
------解决思路----------------------
还有,最好不要把整个图片文件的二进制数据都存到xml里
你完全可以保存成图片,然后xml里存个路径