在数据库中通过XML插入而不知道数据类型

时间:2013-10-31 18:31:53

标签: xml database insert-query

我正在创建一个实用程序,它将从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中添加更多标记的情况下实现此功能,使其变得复杂。

1 个答案:

答案 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块中使用这个解析语句。如果解析失败,则意味着输入数据无效。