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();//关闭数据库连接