none
有人試過把xml存進 sql2005 xml型態的資料欄位嗎 RRS feed

  • 問題

  • Sql 2005有支援xml型態的資料欄位,
    基於某種需要, 我必須把xml存進sql 2005,下面是我try的code(data欄位是xml欄位型態)
    Code Snippet
    SqlConnection conn = new SqlConnection(connString);
    conn.Open();
    SqlCommand command = new SqlCommand("insert into bar(id, data) values(@id, @data)", conn);
    command.Parameters.Add(new SqlParameter("id", "1"));
    SqlParameter sp = new SqlParameter("data", SqlDbType.Xml); //駐A
    sp.Value = doc.InnerXml;
    command.Parameters.Add(sp);
    command.ExecuteNonQuery();
    conn.Close();

     

    如果這樣寫的跑起來會出現SqlException, XML 剖析: 行 1,字元 38,無法切換編碼,
    上網查好像是說到sql 2005的xml型態是用UTF16的方式編碼, .Net裡面的是用UTF8才會有這個問題,
    如果把[駐A]那邊的SqlDbType.Xml改成SqlDbType.Text, 若Xml檔裡面沒中文字的話ok, 有的話又會出錯,
    有人處理過怎麼解決這個問題嗎?還是我code的哪邊寫錯了?

    #當然這問題可以把xml當字串, data欄位為Text型態來處理, 可是我想知道一下上面的問題點有解法嗎?

    2007年6月14日 上午 09:11

解答

  • 我沒碰過你的問題,我作法和你差不多。

    但我通常是不設 xml 的 encoding,要設的話就設成 utf-8。

    2007年6月15日 上午 02:13
    版主