|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!在C#中利用SqlDbType.Xml范例参数
在sqlserver2005和以后的sqlserver中引进了Xml数据范例,在C#中利用Xml数据范例必要指定参数范例为SqlDbType,参数值范例必要用SqlXml,以下示例:
假定有一种表A,A表有两个字段:ID范例int,Data范例Xml,我要用C#往表中拔出一行纪录:
usingstaticvoidInsertA(intaid,stringcontentXml)
{
//ConnString是毗连字符串,必要分外界说
(SqlConnectionconn=newSqlConnection(ConnString))
{
conn.Open();
stringsql="INSERTINTO[A]([ID],[Content])VALUES(@id,@content)";
using(SqlCommandcomm=newSqlCommand(sql,conn))
{
using(XmlTextReaderrdr=newXmlTextReader(contentXml,XmlNodeType.Document,null))
{
SqlXmlsqlXml=newSqlXml(rdr);
SqlParameterparmID=newSqlParameter("@id",aid);
SqlParameterparmContent=newSqlParameter("@content",SqlDbType.Xml,sqlXml.Value.Length);
parmContent.Value=sqlXml;
comm.Parameters.Add(parmID);
comm.Parameters.Add(parmContent);
comm.ExecuteNonQuery();
}
}
conn.Close();
}
}
拔出数据时必要用SqlXml数据范例作为参数值,但读出Xml范例数据时的C#数据范例是string。以下示例:
stringGetContent(intid)
{
stringsql="SELECT[Content]FROM[A]WHERE[ID]="+id;
using(SqlConnectionconn=newSqlConnection(ConnString))
{
conn.Open();
using(SqlCommandcomm=newSqlCommand(sql,conn))
{
stringxml=(string)comm.ExecuteScalar();
returnxml;
}
}
}
必要注重的是,在拔出数据时Xml字段的参数值范例不成觉得string,间接用string会报编码毛病非常。我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |
|