打印本文 打印本文 关闭窗口 关闭窗口
使用xml生成查询用sql语句
作者:武汉SEO闵涛  文章来源:敏韬网  点击数971  更新时间:2007/11/14 11:06:14  文章录入:mintao  责任编辑:mintao

由于项目的需要,要编写大量的sql查询,而项目成员编写的格式有很多的不同,于是想到利用XML统一做方面的工作(具体如何转换,大家可以根据项目编程的语言来实现)。具体如下:

<data>
<select>''''''''</select>
<from_table table_name=''''''''>
<field_name
[connection]=''''AND(default)|OR''''
[bool_type]=''''=(default)|NOT''''
[contain]=''''=|<>|!=|>|>=|!>|<|<=|!<|LIKE(value cannot include "@comma@")|BETWEEN|IN''''
[value]=''''1|1@comma@20|2003-04-01|2003-04-01@comma@2003-04-01|ab|NULL''''
[special]=''''eg.:not in (1,2,3)|IS [NOT] NULL''''
/>
<field_name .../>
<join>
<join_table table_name=''''''''
[join_type]=''''INNER(default)|FULL OUTER|LEFT OUTER|RIGHT OUTER|CROSS''''
join_condition=''''from_table_name.field_name=join_table_name.field_name''''
>
<field_name deal like the first field/>
<field_name ...>
</join_table>
</join>
<orderby value=''''''''/>
<groupby value=''''''''/>
<having value=''''''''/>
</data>

说明:
共七个节点:

  1. select节点:所需要得到的字段
  2. from_table:表源,该节点的table_name属性为表源的表名。
    field_name:字段名,构成查询的条件。其包含的属性介绍如XML串所示(下同)。
  3. join:联接条件
  4. join_table:联接的表
  5. orderby :排序的方法
  6. groupby:分组条件
  7. having:聚合条件

下面以SQL Server2000自带的Northwind数据库为例,介绍具体的做法:

SQL:
SELECT UnitsInStock, ProductID, ProductName
FROM Products
WHERE UnitsInStock BETWEEN 15 AND 25
ORDER BY UnitsInStock

XML:

<data>

<select>UnitsInStock, ProductID, ProductName</select>

<from_table table_name=’ Products’/>

<UnitsInStock contain=’BETWEEN’ value=’15@comma@25’>

</from_table>

<orderby>UnitsInStock</orderby>
</data>

 

由于时间比较仓促,还会有一些考虑不周全的地方,请大家讨论、补充,多谢了。如有疑问,也可以直接给我Email(chinasoe@163.net)

打印本文 打印本文 关闭窗口 关闭窗口