传递参数到MS SQL里面出现一个特殊字符

tangxinzitxz 2012-10-31 06:21:04
今天写了一个储存过程去存储DataTable转成XML字符
c#代码 DataTable转成XML的函数如下
public string DataTableToXml(DataTable dt)
{
try
{
if (dt == null)
{
return "";
}
using (MemoryStream stream = new MemoryStream())
{
using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.Unicode))
{

dt.WriteXml(writer);
int count = (int)stream.Length;
byte[] bytes = new byte[count];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(bytes, 0, count);
UnicodeEncoding encoding = new UnicodeEncoding();
string resultString=encoding.GetString(bytes).Trim();
return resultString;
}
}
}
catch (Exception ex)
{
//调用日志函数
throw ex;
}
}
函数返回的字符是:<NewDataSet><Gavin><NAME>Gavin</NAME></Gavin></NewDataSet>
OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.VarChar);这是传递参数
param.Value = DataTableToXml(dt);

但是在数据库里面会出现两种情况,下图:

就是多了一个特殊符号,我去掉单引号就不显示特殊符号了。如果多了这个特殊符号存到数据就在前面多了一个?号了


由于没有积分了所以只能在非技术版发了。请大神门多多指教。
...全文
558 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangxinzitxz 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

传的的参数类型的原因吧,改为xml试试
C# code

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);
[/Quote]
非常感谢,就是你说的那个问题引起的。
tangxinzitxz 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

传的的参数类型的原因吧,改为xml试试
C# code

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);
[/Quote]
OleDbType好像没有XML这个类型
迪迦凹凸曼 2012-11-02
  • 打赏
  • 举报
回复
传的的参数类型的原因吧,改为xml试试

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);
tangxinzitxz 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

引用 3 楼 的回复:

不怎么懂前台程序 可不可以把那个字符串输出来看看 错在什么地方

hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。


可能是MSSQL不识别 但是不影响存储 你只要前台程序取出来的数据显示是对的就行了啊
[/Quote]

正因为是影响了存储我才想办法要把那个特殊符号给去掉。
开启时代 2012-11-02
  • 打赏
  • 举报
回复
把那个特殊字符复制出来,在程序中替换掉 完事。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 3 楼 的回复:

不怎么懂前台程序 可不可以把那个字符串输出来看看 错在什么地方

hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
[/Quote]

可能是MSSQL不识别 但是不影响存储 你只要前台程序取出来的数据显示是对的就行了啊
tangxinzitxz 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

不怎么懂前台程序 可不可以把那个字符串输出来看看 错在什么地方
[/Quote]
hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
tangxinzitxz 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

单步跟踪下 看看了
[/Quote]
hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
  • 打赏
  • 举报
回复
不怎么懂前台程序 可不可以把那个字符串输出来看看 错在什么地方
开启时代 2012-11-02
  • 打赏
  • 举报
回复
单步跟踪下 看看了
發糞塗牆 2012-11-02
  • 打赏
  • 举报
回复
这个不是很懂

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧