C# 在SQL Server 2008 R2 express中存储XML文件
我试图将XML数据存储到SQL Server 2008 R2 Express数据库中,每个XML文件都有不同的数据。最简单的方法是什么C# 在SQL Server 2008 R2 express中存储XML文件,c#,xml,xml-serialization,sql-server-2008r2-express,C#,Xml,Xml Serialization,Sql Server 2008r2 Express,我试图将XML数据存储到SQL Server 2008 R2 Express数据库中,每个XML文件都有不同的数据。最简单的方法是什么 最好的选择是什么请举例说明。我认为最简单的方法是创建一个存储过程来为您处理存储。然后,您可以通过preferage的ORM检索它,并让C为您反序列化它 CREATE TABLE [dbo].[MyXmlStorage] ( [Id] [int] IDENTITY(1,1) NOT NULL, [FileName] [nvarchar](25
最好的选择是什么请举例说明。我认为最简单的方法是创建一个存储过程来为您处理存储。然后,您可以通过preferage的ORM检索它,并让C为您反序列化它
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nvarchar](255) NOT NULL,
[Xml] [xml] NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
INSERT INTO MyXmlStorage([FileName],[Xml])
VALUES (@filePathFull, @xml)
END
然后按如下方式运行:
exec InsertXml N'C:\files\xmlfile.xml'
我相信最简单的方法是创建一个存储过程来为您处理存储。然后,您可以通过preferage的ORM检索它,并让C为您反序列化它
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nvarchar](255) NOT NULL,
[Xml] [xml] NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
INSERT INTO MyXmlStorage([FileName],[Xml])
VALUES (@filePathFull, @xml)
END
然后按如下方式运行:
exec InsertXml N'C:\files\xmlfile.xml'
我相信最简单的方法是创建一个存储过程来为您处理存储。然后,您可以通过preferage的ORM检索它,并让C为您反序列化它
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nvarchar](255) NOT NULL,
[Xml] [xml] NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
INSERT INTO MyXmlStorage([FileName],[Xml])
VALUES (@filePathFull, @xml)
END
然后按如下方式运行:
exec InsertXml N'C:\files\xmlfile.xml'
我相信最简单的方法是创建一个存储过程来为您处理存储。然后,您可以通过preferage的ORM检索它,并让C为您反序列化它
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nvarchar](255) NOT NULL,
[Xml] [xml] NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
INSERT INTO MyXmlStorage([FileName],[Xml])
VALUES (@filePathFull, @xml)
END
然后按如下方式运行:
exec InsertXml N'C:\files\xmlfile.xml'
好的,这是一个将xml值存储到表中的示例。我还没有尝试过这段代码,但它应该是有效的,但至少它应该澄清如何做的预期
/* Imagine your xml looks something like this
<Content>
<Title>Text</Title>
<Value>15</Value>
</Content>
*/
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](100) NOT NULL,
[Value] int NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
/* Use xpath to query nodes for values inside the Content tag*/
INSERT INTO MyXmlStorage([Title],[Value])
SELECT
x.y.value('title[1]/text()[1]', 'nvarchar(100)') AS title,
x.y.value('value[1]/text()[1]', 'int') AS value
FROM @xml.nodes('//Content') AS x(y)
END
)
好的,这是一个将xml值存储到表中的示例。我还没有尝试过这段代码,但它应该是有效的,但至少它应该澄清如何做的预期
/* Imagine your xml looks something like this
<Content>
<Title>Text</Title>
<Value>15</Value>
</Content>
*/
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](100) NOT NULL,
[Value] int NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
/* Use xpath to query nodes for values inside the Content tag*/
INSERT INTO MyXmlStorage([Title],[Value])
SELECT
x.y.value('title[1]/text()[1]', 'nvarchar(100)') AS title,
x.y.value('value[1]/text()[1]', 'int') AS value
FROM @xml.nodes('//Content') AS x(y)
END
)
好的,这是一个将xml值存储到表中的示例。我还没有尝试过这段代码,但它应该是有效的,但至少它应该澄清如何做的预期
/* Imagine your xml looks something like this
<Content>
<Title>Text</Title>
<Value>15</Value>
</Content>
*/
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](100) NOT NULL,
[Value] int NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
/* Use xpath to query nodes for values inside the Content tag*/
INSERT INTO MyXmlStorage([Title],[Value])
SELECT
x.y.value('title[1]/text()[1]', 'nvarchar(100)') AS title,
x.y.value('value[1]/text()[1]', 'int') AS value
FROM @xml.nodes('//Content') AS x(y)
END
)
好的,这是一个将xml值存储到表中的示例。我还没有尝试过这段代码,但它应该是有效的,但至少它应该澄清如何做的预期
/* Imagine your xml looks something like this
<Content>
<Title>Text</Title>
<Value>15</Value>
</Content>
*/
CREATE TABLE [dbo].[MyXmlStorage]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](100) NOT NULL,
[Value] int NOT NULL,
CONSTRAINT [PK_MyXmlStorage]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE PROCEDURE [dbo].[InsertXml]
(@filePathFull nvarchar(255))
AS
DECLARE @xmlAsString VARCHAR(MAX)
DECLARE @sql nvarchar(max)
DECLARE @xml XML
DECLARE @Rms_FileId nvarchar(50)
DECLARE @Rms_Id nvarchar(50)
DECLARE @Rms_Type nvarchar(50)
DECLARE @Rms_Timestamp nvarchar(50)
BEGIN
SET @sql = 'SELECT @xmlAsString = x.y FROM OPENROWSET( BULK ''' + RTRIM(@filePathFull) + ''', SINGLE_CLOB) x(y)'
exec sp_executesql @sql,N'@xmlAsString VARCHAR(MAX) OUTPUT',@xmlAsString OUTPUT
set @xml = CONVERT(XML,@xmlAsString)
/* Use xpath to query nodes for values inside the Content tag*/
INSERT INTO MyXmlStorage([Title],[Value])
SELECT
x.y.value('title[1]/text()[1]', 'nvarchar(100)') AS title,
x.y.value('value[1]/text()[1]', 'int') AS value
FROM @xml.nodes('//Content') AS x(y)
END
)
使用XML类型列,将XML存储在该列中…@marc_s我该如何做请参阅,例如,使用XML类型列,将XML存储在该列中…@marc_s我该如何做请参阅,例如,使用XML类型列,将XML存储在该列中…@marc_s我该如何做请参阅,例如,使用XML类型列,将XML存储在该列中…@marc_s我该怎么做查看例如,如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!这样,你也不需要任何乱七八糟的标签!感谢你澄清了这一点,有一段时间我有点沮丧:@JFM非常感谢它的工作,但我想存储每个xml元素值,而不是整个xml文件作为字符串。如果你发布代码、xml或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮{}在编辑器工具栏上很好地格式化和语法突出显示它!这样,你也不需要任何乱七八糟的标签!感谢你澄清了这一点,有一段时间我有点沮丧:@JFM非常感谢它的工作,但我想存储每个xml元素值,而不是整个xml文件作为字符串。如果你发布代码、xml或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮{}在编辑器工具栏上很好地格式化和语法突出显示它!这样,你也不需要任何乱七八糟的标签!感谢你澄清了这一点,有一段时间我有点沮丧:@JFM非常感谢它的工作,但我想存储每个xml元素值,而不是整个xml文件作为字符串。如果你发布代码、xml或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮{}在编辑器工具栏上很好地格式化和语法突出显示它!这样,你也不需要任何乱七八糟的标签!感谢你澄清了这一点,我有一段时间有点沮丧:@JFM非常感谢它的工作,但我想存储每个xml元素值,而不是整个xml文件作为一个字符串。