【发布时间】:2013-11-29 20:57:45
【问题描述】:
如何将我的 XML 数据放入数据库中的正确表中?我有以下代码:
DECLARE @XML XML = '<reservering reserveringsnummer="1" status="aanvraag">
<park>Nationaal park Oosterschelde</park>
<accomodatie>Appartement</accomodatie>
<aantalBezoekers>2</aantalBezoekers>
<startdatum>2013-12-12</startdatum>
<einddatum>2013-12-20</einddatum>
<voorkeur>Rustige plaats</voorkeur>
<opties>
<optie>arrangement</optie>
</opties>
<klant>
<aanhef>De heer</aanhef>
<naam>voornaam</naam>
<adres>adres</adres>
<postcode>postcode</postcode>
<email>mailadres@mailadres.com</email>
<rekeningnummer>012345678</rekeningnummer>
</klant>
</reservering>'
'SELECT
ReserveringNummer = Reservering.value('@reserveringsnummer', 'int'),
ReserveringStatus = Reservering.value('@status', 'varchar(50)'),
Park = Reservering.value('(park)[1]', 'varchar(50)'),
Accomodatie = Reservering.value('(accomodatie)[1]', 'varchar(50)'),
AantalBezoekers = Reservering.value('(aantalBezoekers)[1]', 'int'),
StartDatum = Reservering.value('(startdatum)[1]', 'date'),
EindDatum = Reservering.value('(einddatum)[1]', 'date'),
Voorkeur = Reservering.value('(voorkeur)[1]', 'varchar(50)'),
Opties = Opties.value('(optie)[1]', 'varchar(50)'),
Aanhef = Klant.value('(aanhef)[1]', 'varchar(50)'),
KlantNaam = Klant.value('(naam)[1]', 'varchar(50)'),
Adres = Klant.value('(adres)[1]', 'varchar(50)'),
Postcode = Klant.value('(postcode)[1]', 'varchar(50)'),
Email = Klant.value('(email)[1]', 'varchar(50)'),
Rekeningnummer = Klant.value('(rekeningnummer)[1]', 'varchar(50)')
FROM
@XML.nodes('/reservering') AS ReserveringTable(Reservering),
@XML.nodes('/reservering/opties') AS OptiesTable(Opties),
@XML.nodes('/reservering/klant') AS KlantTable(Klant)
INSERT INTO dbo.PRODUCT(naam)
VALUES (Opties)
SELECT SCOPE_IDENTITY() AS ProductID;
INSERT INTO dbo.WONING(naam)
VALUES (Accomodatie)
SELECT SCOPE_IDENTITY() AS WoningID;
INSERT dbo.KLANT(aanhef, naam, adres, postcode, emailadres, rekeningnummer)
VALUES (Aanhef, KlantNaam, Adres, Postcode, Email, Rekeningnummer)
SELECT SCOPE_IDENTITY() AS KlantID;
INSERT INTO dbo.RESERVERING(reserveringsnummer, status, van_datum, tot_datum, woning_id, product, voorkeur, prijs, klant, aantal_bezoekers)
VALUES (ReserveringNummer, ReserveringStatus, StartDatum, EindDatum, WoningID, ProductID, Voorkeur, Prijs, KlantID, AantalBezoekers)
如您所见,我也在尝试将产品和获奖 ID 放入我的 RESERVERING 表中,这是正确的方法吗?现在程序给我一个错误:无效的列名'columnname',其中columnname 是值。对于我在 INSERT 语句中定义的所有值,它给了我同样的错误。
【问题讨论】:
-
你用的是什么数据库?
-
SQL Server 2008 R2,我正在使用 Microsoft SQL Server Management Studio
标签: sql xml insert sql-server-2008-r2