我正在创建一个实用程序,它将从XML中插入数据库中的记录,这通常发生在DBUnit(Java)中。
我想知道在创建查询时如何管理数据类型?例如Employee是一个表,内部元素是它们的字段。
<Employee>
<firstName>Sohail</firstName>
<lastName>Hussain</lastName>
<salary>100000</salary>
</Employee>
在上面的xml中,我无法预测薪水是否为int?因此,当我创建内联查询时,它将是
Insert into Employee(firstName, lastName, salary)
values ('Sohail', 'Hussain', '10000')
在查询中,您可以看到10000在引用中,如何在不在XML中添加更多标记的情况下实现此功能,使其变得复杂。
答案 0 :(得分:0)
首先我的问题是你正在使用哪个数据库?
我不确定您是如何准备查询但是SQL Server中可用的解析机制
Declare @XmlData XML
Set XmlData ='<Employee>
<firstName>Sohail</firstName>
<lastName>Hussain</lastName>
<salary>100000</salary>
Declare @MapData Table (firstname varchar(100),lastname varchar(100),salary int )
INSERT INTO @MapData
SELECT
Tbl.Col.value('firstName[1]', 'varchar(100)'),
Tbl.Col.value('lastName[1]', 'varchar(100)'),
Tbl.Col.value('salary[1]', 'int')
FROM @XmlData.nodes('//Employee') Tbl(Col)
现在您在@MapData表变量中有值,您可以根据需要使用
结果可以看出
select * from @MapData
如果解析失败,它将引发错误。所以在try catch块中使用这个解析语句。如果解析失败,则意味着输入数据无效。