深入C#中使用SqlDbType.Xml類型參數(shù)的使用詳解
更新時間:2013年05月18日 15:59:31 作者:
本篇文章是對在C#中使用SqlDbType.Xml類型參數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下
在sql server2005以及之后的sql server中引入了Xml數(shù)據(jù)類型,在C#中使用Xml數(shù)據(jù)類型需要指定參數(shù)類型為SqlDbType,參數(shù)值類型需要用SqlXml,如下示例:
假定有一種表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();
}
}
插入數(shù)據(jù)時需要用SqlXml數(shù)據(jù)類型作為參數(shù)值,但讀出Xml類型數(shù)據(jù)時的C#數(shù)據(jù)類型是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;
}
}
}
需要注意的是,在插入數(shù)據(jù)時Xml字段的參數(shù)值類型不可以為string,直接用string會報編碼錯誤異常。
假定有一種表A,A表有兩個字段:ID 類型 int,Data 類型 Xml,我要用C#往表中插入一行記錄:
復(fù)制代碼 代碼如下:
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();
}
}
插入數(shù)據(jù)時需要用SqlXml數(shù)據(jù)類型作為參數(shù)值,但讀出Xml類型數(shù)據(jù)時的C#數(shù)據(jù)類型是string。如下示例:
復(fù)制代碼 代碼如下:
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;
}
}
}
需要注意的是,在插入數(shù)據(jù)時Xml字段的參數(shù)值類型不可以為string,直接用string會報編碼錯誤異常。
您可能感興趣的文章:
相關(guān)文章
基于C#調(diào)用c++Dll結(jié)構(gòu)體數(shù)組指針的問題詳解
下面小編就為大家分享一篇基于C#調(diào)用c++Dll結(jié)構(gòu)體數(shù)組指針的問題詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12C#中哈希表(HashTable)用法實例詳解(添加/移除/判斷/遍歷/排序等)
這篇文章主要介紹了C#中哈希表(HashTable)用法,簡單講述了哈希表的原理并結(jié)合實例形式詳細分析了C#針對哈希表進行添加、移除、判斷、遍歷、排序等操作的實現(xiàn)技巧,需要的朋友可以參考下2016-06-06