2016-09-12 11 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にハードコードされたパスを交換したいが、私はそうするとき、それは文字列を期待すると述べていますか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#でパラメータをロードするにはどうすればよいですか?

+0

インターネット上の多くの例を見るには、以下のgoogle検索を行ってください。Stackoverflow FROM OPENROWSET' – MethodMan

+0

私はOpenRowSetクエリを動的SQLにする必要があるとわかっていますが、 C#で? [こちら](http://pastebin.com/zGVDGc0v) –

+0

コードを更新してください未知のリンクをクリックしません申し訳ありません質問を編集してここに動的SQLを表示 – MethodMan

答えて

1

だから私は私の答えを理解した。

あなたがSqlConnectionオブジェクトを使用しているなら、あなたはそれのようになりますので、パラメータとして変数名を渡す必要があります。

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

しかしOleDbConnectionオブジェクトでは、あなたは

DECLARE @filePath nvarchar(256) 
SET @filePath = ? 
ような何かをする必要がありますSQLの

...、0は数VARIに対応次いで

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

(「?」で表される)それは上から来る(0から始まる)。

関連する問題