在C#中使用SqlDbType.Xml類型參數

在sql server2005以及之後的sql server中引入了Xml數據類型,在C#中使用Xml數據類型需要指定參數類型爲SqlDbType,參數值類型需要用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();
    }
}
插入數據時需要用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會報編碼錯誤異常。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章