Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过存储过程插入XML数据时出错_C#_Xml_Sql Server 2005 - Fatal编程技术网

C# 通过存储过程插入XML数据时出错

C# 通过存储过程插入XML数据时出错,c#,xml,sql-server-2005,C#,Xml,Sql Server 2005,在SQLServer2005中,我有一个表,其中列的数据类型为xml。我创建了一个存储过程来向该列中插入值 但是当从C#中的代码调用SP时,它给了我一个错误 无法将参数值从XDocument转换为字符串 有人能帮忙吗 这是我创建的存储过程: Create Procedure [dbo].[TestReportRepository_Save] @ReportExecutionTime datetime, @ReportFile xml, as begin insert into TestRep

在SQLServer2005中,我有一个表,其中列的数据类型为
xml
。我创建了一个存储过程来向该列中插入值

但是当从C#中的代码调用SP时,它给了我一个错误

无法将参数值从XDocument转换为字符串

有人能帮忙吗

这是我创建的存储过程:

Create Procedure [dbo].[TestReportRepository_Save]
@ReportExecutionTime datetime,
@ReportFile xml,

as
begin

insert into TestReportRepository(ReportExecutionTime,ReportFile) values(@ReportExecutionTime,@ReportFile)

end
C#代码是


请帮助我确定我做错了什么。

传递此参数时-传递的不是XDocument对象,而是它的字符串表示形式


对于XmlDocument,它是XmlDocument.OuterXml,请为XDocument找到一个并传递它

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!在您的C代码中,您在哪里提供参数值??我看不出来。基本上-SQL Server的XML类型是一个美化的字符串-它不能直接处理
XDocument
-您必须将
XDocument
“序列化”为字符串以将其传递给SQL Server(例如,使用
.ToString()
方法)谢谢@marc\s:发布任何新问题时,我都会记住您的建议。也谢谢你给出的解决方案。@mark_很抱歉,我在写答案时没有注意到你的评论,如果你认为这是一个卖淫代表-我将删除答案无需担心:-)我只是不想把它扩展到一个“真实”的答案-你做了-你的努力值得表扬@OlegDok从您这边获得有用的信息。谢谢你的帮助。
DbParameter dbParam1 = dac.Parameter("@ReportExecutionTime", ReportExecutionTime, DbType.DateTime, ParameterDirection.Input);
DbParameter dbParam2 = dac.Parameter("@ReportFile", xmlDoc.Document, DbType.Xml, ParameterDirection.Input);

DbParameter[] dbParamColl = new DbParameter[] { dbParam1, dbParam2 };
long reportID = dac.Save("TestReportRepository_save", dbParamColl);