如何将 XML 从 C# 传递到 SQL Server 2008 中的存储过程?
我想将 xml 文档传递给 sql server 存储过程,如下所示:
CREATE PROCEDURE BookDetails_Insert (@xml xml)
我想将某些字段数据与其他表数据进行比较,如果匹配,则必须将记录插入到表中。
需求:
如何将 XML 传递给存储过程?我尝试了这个,但不起作用:[正在工作]
command.Parameters.Add( 新的 SqlParameter("@xml", SqlDbType.Xml) { 值 = new SqlXml(new XmlTextReader(xmlToSave.InnerXml, XmlNodeType.Document,空)) });
如何访问存储过程中的 XML 数据?
编辑:[工作]
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;
}
编辑2:如何创建选择查询来选择页面,基于某些条件的描述。
<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>
I want to pass xml document to sql server stored procedure such as this:
CREATE PROCEDURE BookDetails_Insert (@xml xml)
I want compare some field data with other table data and if it is matching that records has to inserted in to the table.
Requirements:
How do I pass XML to the stored procedure? I tried this, but it doesn’t work:[Working]
command.Parameters.Add( new SqlParameter("@xml", SqlDbType.Xml) { Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml, XmlNodeType.Document, null)) });
How do I access the XML data within the stored procedure?
Edit: [Working]
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;
}
Edit 2: How to create a select query to select pages, description based on some conditions.
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对于问题的第二部分,请参阅我对 存储过程:传递 XML 作为参数和 INSERT(键/值对) 有关如何在存储过程中使用 XML 的示例。
编辑:下面的示例代码基于评论中给出的具体示例。
For part 2 of your question, see my answer to Stored procedure: pass XML as an argument and INSERT (key/value pairs) for an example of how to use XML within a stored procedure.
EDIT: Sample code below is based on the specific example given in the comments.
如 http://support.microsoft.com/kb/555266 中所述,您需要将 xml 数据作为 NText 传递。
您可以按如下方式查询 XML 变量:
As stated in http://support.microsoft.com/kb/555266, you need to pass xml data as NText.
You can query an XML variable as follows:
您将主要使用 xPath 和 XQuery 来查询和修改 XML 数据。
这是一个很好的起点 http://msdn.microsoft.com/en-我们/library/ms190798.aspx。
我实在无法提供更具体的信息,因为您的问题非常模糊。如果您需要有关如何使用 XPath 和 XQuery 的帮助,请提出有关如何执行某些操作的具体问题。
You will be using xPath and XQuery mostly to query and modify XML data.
Here is a good starting point http://msdn.microsoft.com/en-us/library/ms190798.aspx.
I can't really get any more specific because your question is extremely vague. Please ask specific questions on how to do something if you want help with how to use XPath and XQuery.