SqlParameter を使用する必要があります。そのようにすることをお勧めします:
command.Parameters.Add( new SqlParameter("@xml", SqlDbType.Xml) {Value =new SqlXml(new XmlTextReader(xmlToSave.InnerXml , XmlNodeType.Document, null)) })
プレ>SQL は次のようになります:
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 トランス =connection.BeginTransaction(); { command.ExecuteNonQuery(); を試してください。 trans.Commit(); } catch (例外) { trans.Rollback();投げる; }}}コード> プレ>