传递参数到MS SQL里面出现一个特殊字符
今天写了一个储存过程去存储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);
但是在数据库里面会出现两种情况,下图:
就是多了一个特殊符号,我去掉单引号就不显示特殊符号了。如果多了这个特殊符号存到数据就在前面多了一个?号了
由于没有积分了所以只能在非技术版发了。请大神门多多指教。
[最优解释]
可能是MSSQL不识别 但是不影响存储 你只要前台程序取出来的数据显示是对的就行了啊
[其他解释]
传的的参数类型的原因吧,改为xml试试
OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);
[其他解释]
这个不是很懂
[其他解释]
单步跟踪下 看看了
[其他解释]
不怎么懂前台程序 可不可以把那个字符串输出来看看 错在什么地方
[其他解释]
hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
[其他解释]
hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
[其他解释]
把那个特殊字符复制出来,在程序中替换掉 完事。
[其他解释]
正因为是影响了存储我才想办法要把那个特殊符号给去掉。
[其他解释]
OleDbType好像没有XML这个类型
[其他解释]
非常感谢,就是你说的那个问题引起的。
