C# 如何将xml文件保存到xml列中

C# 如何将xml文件保存到xml列中,c#,xml,sql-server-2008,C#,Xml,Sql Server 2008,我有一个xml文件,我想把它的内容保存到数据库中,以便再次读取 我使用XmlDocument加载xml文件,并使用InnerXml保存此xml 这是我的密码 cmd.CommandText = @"INSERT INTO pages(BPMNID,XML) VALUES (@BPMNID,@XML)"; cmd.Parameters.AddWithValue("@BPMNID",2); cmd.Parameters.AddWithValue("@XML", XDoc.InnerXml); cm

我有一个xml文件,我想把它的内容保存到数据库中,以便再次读取

我使用
XmlDocument
加载xml文件,并使用
InnerXml
保存此xml

这是我的密码

cmd.CommandText = @"INSERT INTO pages(BPMNID,XML) VALUES (@BPMNID,@XML)";
cmd.Parameters.AddWithValue("@BPMNID",2);
cmd.Parameters.AddWithValue("@XML", XDoc.InnerXml);

cmd.Connection = conn;
conn.Open();

try
{
    cmd.ExecuteNonQuery();
}
当运行前面的代码时,我得到一个异常

XML解析:无法切换编码


提示:Xml列是一个
Xml

请尝试使用如下代码:

public void SaveXml(int id, string xmlFileName)
{
    // read your XML
    string xmlContent = File.ReadAllText(xmlFileName);

    // set up query
    string insertQuery = "INSERT INTO pages(BPMNID, XML) VALUES (@BPMNID, @XML)";

    using (SqlConnection conn = new SqlConnection(-your-connection-string-here-))
    using (SqlCommand cmd = new SqlCommand(insertQuery, conn))
    {
        // define parameters
        cmd.Parameters.Add("@BPMNID", SqlDbType.Int).Value = id;
        cmd.Parameters.Add("@XML", SqlDbType.VarChar, -1).Value = xmlContent;

        // open connection, execute query, close connection
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }
}

您应该签出并停止使用
.AddWithValue()
-这可能会导致意外的结果…将XML从文件加载到字符串中,然后将其传递到SQL查询中。SQL查询不知道
XmlDocument
:..@marc\s我试着这样做,并给我同样的例外你是说
ReadAllText
?不
LoadAllText
exception@Ahmed:更新了我的代码-使用
SqlDbType.VarChar,-1
似乎可以工作(至少对我来说是这样),即使它们的头文件中包含
encoding=“utf-8”
,谢谢您的帮助