आपको एक SqlParameter का उपयोग करना होगा। मैं इसे ऐसा करने की सलाह दूंगा:
command.Parameters.Add(
new SqlParameter("@xml", SqlDbType.Xml)
{Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
, XmlNodeType.Document, null)) })
और एसक्यूएल इस तरह दिखना चाहिए:
String sql = "INSERT INTO "+tableName+" ("+columnName+") VALUES (@xml)";
और चूंकि पहला बच्चा हमेशा xml नोड होता है, आप एन्कोडिंग को निम्न कथन से बदल सकते हैं।
xmlToSave.FirstChild.InnerText = "version=\"1.0\" encoding=\"UTF-16\"";
कुल मिलाकर यह ऐसा ही दिखेगा:
void SaveXmlToDatabase(DbConnection connection,
XmlDocument xmlToSave,
String tableName, String columnName);
{
String sql = "INSERT INTO "+tableName+" ("+columnName+") VALUES (@xml)";
using (DbCommand command = connection.CreateCommand())
{
xmlToSave.FirstChild.InnerText = "version=\"1.0\" encoding=\"UTF-16\"";
command.CommandText = sql;
command.Parameters.Add(
new SqlParameter("@xml", SqlDbType.Xml)
{Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
, XmlNodeType.Document, null)) });
DbTransaction trans = connection.BeginTransaction();
try
{
command.ExecuteNonQuery();
trans.Commit();
}
catch (Exception)
{
trans.Rollback();
throw;
}
}
}