Como passar XML de C # para um procedimento armazenado no SQL Server 2008?
Quero passar o documento xml para o procedimento armazenado do servidor sql como este:
CREATE PROCEDURE BookDetails_Insert (@xml xml)
Quero comparar alguns dados de campo com outros dados da tabela e, se for correspondente, os registros precisam ser inseridos na tabela.
Requisitos:
Como passo XML para o procedimento armazenado? Eu tentei isso, mas não funciona:[Trabalhando]
command.Parameters.Add(
new SqlParameter("@xml", SqlDbType.Xml)
{
Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml,
XmlNodeType.Document, null))
});
Como acesso os dados XML no procedimento armazenado?
Editar:[Trabalhando]
String sql = "BookDetails_Insert";
XmlDocument xmlToSave = new XmlDocument();
xmlToSave.Load("C:\\Documents and Settings\\Desktop\\XML_Report\\Books_1.xml");
SqlConnection sqlCon = new SqlConnection("...");
using (DbCommand command = sqlCon.CreateCommand())
{
**command.CommandType = CommandType.StoredProcedure;**
command.CommandText = sql;
command.Parameters.Add(
new SqlParameter("@xml", SqlDbType.Xml)
{
Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml
, XmlNodeType.Document, null))
});
sqlCon.Open();
DbTransaction trans = sqlCon.BeginTransaction();
command.Transaction = trans;
try
{
command.ExecuteNonQuery();
trans.Commit();
sqlCon.Close();
}
catch (Exception)
{
trans.Rollback();
sqlCon.Close();
throw;
}
Editar 2: Como criar uma consulta de seleção para selecionar páginas, descrição com base em algumas condições.
<booksdetail> <isn_13>700001048</isbn_13> <isn_10>01048B</isbn_10>
<Image_URL>http://www.landt.com/Books/large/00/7010000048.jpg</Image_URL>
<title>QUICK AND FLUPKE</title> <Description> PRANKS AND JOKES QUICK AND FLUPKE </Description> </booksdetail>