C# 如何将xml文件保存到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
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”
,谢谢您的帮助