2016-09-12 9 views
1

주어진 위치에서 XML 파일을 추출하려고하는데 C#에서 특정 위치를 가져 와서 SQL 스크립트로 전달해야합니다.매개 변수화 된 파일 이름으로 OpenRowSet 사용

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와 하드 코딩 경로를 대체 할 (또는?)하지만 난 그렇게 그것이 기대하고 있다고 할 때 문자열이나 :

는 내 현재 코드의 조각이다 a text_lex.

using (var cmd = new SqlCommand(...)) 
{ 
    cmd.Parameters.Add(new SqlServerParameter(0, "actual path from unzipping"); 

편집 :

그런 다음 C#에서 내가 좋아하는 뭔가를 바라고 그래서 같이 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#에서 매개 변수를로드하는 방법은 무엇입니까?

+0

'Stackoverflow FROM OPENROWSET' – MethodMan

+0

그래, 내가 OpenRowSet 쿼리를 다이나믹 SQL로 만들 필요가 있다는 것을 알았지 만, 어떻게 매개 변수를로드 할까? C#에서? [여기] (http://pastebin.com/zGVDGc0v) –

+0

코드를 업데이트하십시오. 알 수없는 링크를 클릭하지 않을 예정입니다. 죄송합니다. 질문을 편집하고 여기에 동적 SQL을 표시하십시오. – MethodMan

답변

1

좋아, 그럼 내 대답을 알아 냈어. 당신이 다음도록 SqlConnection을 사용하는 경우가 될 수 있도록

당신은 매개 변수로 변수 이름을 전달해야합니다는 OleDbConnection에서 그러나

cmd.Parameters.Add(new SqlServerParameter("@filePath", "actual path from unzipping"); 

는, 당신은

DECLARE @filePath nvarchar(256) 
SET @filePath = ? 
같은 것을 할 필요가 는 SQL에서

... 0이 번호에 대응 VARI 다음

cmd.Parameters.Add(new OleDbParameter("0", "actual path from unzipping"); 

가능한 ("?"로 표시) 맨 위부터입니다 (0에서 시작).