Ich versuche, eine XML-Datei von einem bestimmten Speicherort zu extrahieren, aber ich werde diesen bestimmten Speicherort in C# und müssen es in das SQL-Skript übergeben. Verwenden von OpenRowSet mit parametrisierten Dateinamen
Dies ist ein Ausschnitt aus meinem aktuellen Code:
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;
Offensichtlich möchte ich die hart codierte Pfad mit @filepath ersetzen (oder?), Aber wenn ich das tue, so heißt es, dass es sich um eine Zeichenfolge erwartet oder ein text_lex.
using (var cmd = new SqlCommand(...))
{
cmd.Parameters.Add(new SqlServerParameter(0, "actual path from unzipping");
bearbeiten:
Dann in C# Ich mag, etwas zu tun bin die Hoffnung, ich werde wie so dynamischen SQL für den OPENROWSET Teil verwenden:
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
jetzt meine Frage: Wie lade ich den Parameter in C#?
machen Sie eine Google-Suche auf dem folgenden, um die vielen Beispiele im Internet zu sehen 'Stackoverflow VON OPENROWSET' – MethodMan
Ok, also habe ich herausgefunden, dass ich meine OpenRowSet-Abfrage in Dynamic sql machen muss, aber dann wie lade ich den Parameter in C#? Dies ist meine neue Abfrage [hier] (http://pastebin.com/zGVDGc0v) –
aktualisieren Sie Ihren Code Ich werde nicht auf unbekannte Links klicken Sorry Bearbeiten Sie die Frage und zeigen Sie Ihre dynamische SQL hier – MethodMan