首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-12-14 
传递参数到MS SQL里面出现一个特殊字符今天写了一个储存过程去存储DataTable转成XML字符c#代码 DataTable

传递参数到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);

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

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


由于没有积分了所以只能在非技术版发了。请大神门多多指教。
[最优解释]

引用:
引用:

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

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


可能是MSSQL不识别  但是不影响存储  你只要前台程序取出来的数据显示是对的就行了啊  
[其他解释]
传的的参数类型的原因吧,改为xml试试

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);

[其他解释]
这个不是很懂
[其他解释]
单步跟踪下 看看了 
[其他解释]
不怎么懂前台程序  可不可以把那个字符串输出来看看  错在什么地方
[其他解释]
引用:
单步跟踪下 看看了

hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
[其他解释]
引用:
不怎么懂前台程序  可不可以把那个字符串输出来看看  错在什么地方

hi 我在前台程序里面看不到那个特殊字符,但是在MS SQL里面我放到引号变量里面就能看到那个特殊字符了。
[其他解释]
把那个特殊字符复制出来,在程序中替换掉 完事。
[其他解释]
引用:
引用:

引用:

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

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


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


正因为是影响了存储我才想办法要把那个特殊符号给去掉。
[其他解释]
引用:
传的的参数类型的原因吧,改为xml试试
C# code

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);

OleDbType好像没有XML这个类型
[其他解释]
引用:
传的的参数类型的原因吧,改为xml试试
C# code

OleDbParameter param = new OleDbParameter("@xmlstr", OleDbType.Xml);

非常感谢,就是你说的那个问题引起的。

热点排行
Bad Request.