compact framework 或者 WinCE 编辑SqlXml字段

原先基于windows CE.NET 5.0的嵌入式设备,进行功能升级的时候。管理系统的数据库进行了改造。

“编号 名称 值”的表优化为一个SqlXml字段存储这个表。

后来发现在compact framework 2.0上不支持SqlXml。

1.没有GetSqlXml()方法获得xml字段的值。

2.SqlParameter创建的时候,提示SqlDbType不支持25(就是SqlDbType.Xml)。


将SqlXml作为string去读写,写了实际代码验证好用。

1.读取SqlXml使用string xmlContent = GetString(0);

按照下面的方法转为DataTable

DataTable dt = new DataTable();
XmlTextReader xtr = new XmlTextReader(new StringReader(xmlContent));
dt.ReadXml(xtr);
xtr.Close();
xtr = null;
return dt;



2.写SqlXml

。。。dt保存数据的DataTable


using(MemoryStream ms = new MemoryStream())
{
dt.WriteXml(ms,XmlWriteMode.WriteSchema,false);

  string tempString = System.Text.Encoding.UTF8.GetString(ms.ToArray(),0,Convert.ToInt32(ms.Length));  

//注意上面的代码,推荐使用UTF8编码否则使用ASCII,假如里面有汉字转换为string的时候变成乱码。

最后更新到数据库的时候提示xml格式错误。

SqlParameter[] parameters = {
  new SqlParameter("@test", SqlDbType.NVarChar,Convert.ToInt32(tempString.Length),...};


然后执行SQL 命令即可!
 }

这是compact framework版本低的解决方案!高版本可能支持sqlxml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值