【发布时间】:2017-01-20 05:51:57
【问题描述】:
我正在尝试从给定位置提取 XML 文件,但是我将在 C# 中获取该特定位置并需要将其传递到 sql 脚本中。
这是我当前代码的 sn-p:
CREATE TABLE XMLwithOpenXML
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME
)
DECLARE @filePath nvarchar(256)
INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK 'C:\BimlFlex\BimlFlex.DatabaseContents.xml', SINGLE_BLOB) AS x;
显然我想用@filepath(或?)替换硬编码路径,但是当我这样做时,它说它需要一个字符串或一个text_lex。
然后在 c# 中我希望做类似的事情:
using (var cmd = new SqlCommand(...))
{
cmd.Parameters.Add(new SqlServerParameter(0, "actual path from unzipping");
编辑:我将为 openrowset 部分使用动态 SQL,如下所示:
DECLARE @OpenRowSetSql nvarchar(MAX)
SET @OpenRowSetSql =
'INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK '''+ @filePath + ''', SINGLE_BLOB) AS x;'
EXEC sp_executesql @OpenRowSetSql
现在我的问题是: 如何在 C# 中加载参数?
【问题讨论】:
-
在下面做谷歌搜索以查看互联网上的许多示例
Stackoverflow FROM OPENROWSET -
好的,所以我发现我需要将我的 OpenRowSet 查询转换为动态 sql,但是如何在 C# 中加载参数?这是我的新查询here
-
更新你的代码我不会点击未知链接抱歉编辑问题并在这里显示你的动态 SQL
-
完成,对此感到抱歉
标签: c# sql xml dynamic-sql