在C#中使用SqlDbType.Xml类型参数
2011-08-17 09:14
211 查看
在sql server2005以及之后的sql server中引入了Xml数据类型,在C#中使用Xml数据类型需要指定参数类型为SqlDbType,参数值类型需要用SqlXml,如下示例:
假定有一种表A,A表有两个字段:ID 类型 int,Data 类型 Xml,我要用C#往表中插入一行记录:
需要注意的是,在插入数据时Xml字段的参数值类型不可以为string,直接用string会报编码错误异常。
假定有一种表A,A表有两个字段:ID 类型 int,Data 类型 Xml,我要用C#往表中插入一行记录:
static void InsertA(int aid, string contentXml) { //ConnString是连接字符串,需要额外定义 using (SqlConnection conn = new SqlConnection(ConnString)) { conn.Open(); string sql = "INSERT INTO [A] ([ID],[Content])VALUES(@id,@content)"; using (SqlCommand comm = new SqlCommand(sql, conn)) { using (XmlTextReader rdr = new XmlTextReader(contentXml, XmlNodeType.Document, null)) { SqlXml sqlXml = new SqlXml(rdr); SqlParameter parmID = new SqlParameter("@id", aid); SqlParameter parmContent = new SqlParameter("@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。如下示例:
string GetContent(int id) { string sql = "SELECT [Content] FROM [A] WHERE [ID] = " + id; using (SqlConnection conn = new SqlConnection(ConnString)) { conn.Open(); using (SqlCommand comm = new SqlCommand(sql,conn)) { string xml = (string)comm.ExecuteScalar(); return xml; } } }
需要注意的是,在插入数据时Xml字段的参数值类型不可以为string,直接用string会报编码错误异常。
相关文章推荐
- 深入C#中使用SqlDbType.Xml类型参数的使用详解
- 在C#中使用SqlDbType.Xml类型参数
- 在C#中使用SqlDbType.Xml类型参数
- 在C#中使用SqlDbType.Xml类型参数
- sql 中使用了output类型,那么在程序中如何传这个参数呢
- C#中如何为参数SqlDbType.Decimal指定精度与小数位数
- More Effective C# Item8 :尽可能使用泛型方法,除非需要将类型参数用于实例的字段中
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- SqlServer数据类型、C#SqlDbType对应关系及转换
- \t\t在MSSQL中定义和使用C#自定义类型 SQL Server08表类型参数传递
- 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- SqlServer数据类型、C#SqlDbType对应关系及转换
- C#中把任意类型的泛型集合转换成SQLXML数据格式的实例
- 不同数据库在C#中使用参数化SQL语句的大同小异
- Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作
- More Effective C# Item6 : 使用委托定义类型参数上的方法约束
- SqlServer数据类型、C#SqlDbType对应关系及转换