C# 通过存储过程插入XML数据时出错
在SQLServer2005中,我有一个表,其中列的数据类型为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
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);