0

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

4

1 回答 1

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

于 2013-10-31T18:56:16.970 回答