日期:2014-05-17  浏览次数:20861 次

c#在写入SQL数据库时,如何使html标签内容原样保存?
我遇到这样一个问题,从一个旧的文章数据库里复制数据到另一个新数据库,当复制content字段时,由于content是文章的正文,里面包含了一些从WORD复制时带来的html样式标签,类似下面这样的内容:

HTML code

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-outline-level: 1" align=center><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 42pt"><FONT face="Times New Roman">



由于里面有<、>、"、'、等符号,导致在存入数据库时报错,请问该如何处理,才能使这样html内容原样保存进数据库?
注:我不想过滤掉这些html标签,因为丢失这些html样式会导致前台显示时版式发生变化,你懂的。



附:
下面是我把数据存入数据库时的写法,请各位指点一下该如何处理这个content字段,谢谢!

C# code

                conTo.Open();//打开数据库连接
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conTo;//设置连接属性

                
                //遍历dataset (名称为ds)里旧数据表的每一行
                foreach (DataRow dr in ds.Tables["旧数据"].Rows)
                {
                    cmd.CommandText = @"insert into article (Title,Content) values ('" + dr["title"].ToString() + "','" + dr["content"].ToString() + "')";

                    cmd.ExecuteNonQuery();
                }



                conTo.Close();//关闭数据库连接



------解决方案--------------------
写入Sql数据库时用参数化SQL,取出显示时进行Html编码:Server.HtmlEncode("str");
------解决方案--------------------
http://www.cnblogs.com/asdlx/archive/2010/05/14/1735410.html
------解决方案--------------------
conTo.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand();
cmd.Connection = conTo;//设置连接属性


//遍历dataset (名称为ds)里旧数据表的每一行
foreach (DataRow dr in ds.Tables["旧数据"].Rows)
{
cmd.CommandText = @"insert into article (Title,Content) values (@title,@content)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@title",dr["title"].ToString());
cmd.Parameters.AddWithValue("@content",dr["content"].ToString());
cmd.ExecuteNonQuery();
}



conTo.Close();//关闭数据库连接