深入C#中使用SqlDbType.Xml類型參數(shù)的使用詳解
更新時間:2013年05月18日 15:59:31 作者:
本篇文章是對在C#中使用SqlDbType.Xml類型參數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在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會報(bào)編碼錯誤異常。
假定有一種表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會報(bào)編碼錯誤異常。
您可能感興趣的文章:
- C#實(shí)現(xiàn)的XML操作類實(shí)例
- C#實(shí)現(xiàn)XML與實(shí)體類之間相互轉(zhuǎn)換的方法(序列化與反序列化)
- C#中使用XmlDocument類來創(chuàng)建和修改XML格式的數(shù)據(jù)文件
- 詳解C#借助.NET框架中的XmlTextReader類讀取XML的方法
- C#寫入對象或集合類型數(shù)據(jù)到xml文件的方法
- 基于C#實(shí)現(xiàn)XML文件讀取工具類
- C#自定義處理xml數(shù)據(jù)類實(shí)例
- c#操作xml幫助類分享(xml增刪改查)
- C# 操作XML文檔 使用XmlDocument類方法
- C#實(shí)現(xiàn)的xml操作類完整實(shí)例
相關(guān)文章
C#使用post發(fā)送和接收數(shù)據(jù)的方法
這篇文章主要介紹了C#使用post發(fā)送和接收數(shù)據(jù)的方法,涉及C#使用post收發(fā)數(shù)據(jù)的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
WCF基礎(chǔ)介紹并創(chuàng)建簡單應(yīng)用程序
這篇文章介紹了WCF基礎(chǔ)并創(chuàng)建簡單WCF應(yīng)用程序,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
ScriptControl控件執(zhí)行自定義VBS腳本示例分析
這篇文章主要介紹ScriptControl控件 msscript.ocx msscript.oca執(zhí)行自定義VBS腳本的示例代碼,需要的朋友可以參考下2013-04-04
C# 反射與 Quartz 實(shí)現(xiàn)流程處理詳情
根據(jù)要實(shí)現(xiàn)流程處理,比如用戶可以定義一個定時任務(wù),每周一查看報(bào)表。任務(wù)是用Quartz可實(shí)現(xiàn),但用戶自己選擇報(bào)表就比較麻煩,這時因?yàn)橄到y(tǒng)的不同模塊的生成報(bào)表的函數(shù)不同,這時便可以傳入一個方法名和方法的輸入?yún)?shù),就可以調(diào)用該方法。下面小編我為大家介紹具體過程2021-09-09
Unity實(shí)現(xiàn)人物旋轉(zhuǎn)和移動效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)人物旋轉(zhuǎn)和移動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C# WinForm捕獲全局變量異常 SamWang解決方法
本文將介紹C# WinForm捕獲全局變量異常 SamWang解決方法,需要的朋友可以參考2012-11-11
C#使用DllImport調(diào)用非托管的代碼的方法
C#調(diào)用非托管代碼的方式主要有Com調(diào)用、DllImport方式調(diào)用、加載非托管動態(tài)鏈接庫、直接執(zhí)行機(jī)器碼等方式?,F(xiàn)在介紹一下我自己常用的DllImport方式調(diào)用MSDN中提到的GetShortPathName方法;2013-03-03

