由于项目的需要,要编写大量的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>
说明: 共七个节点:
- select节点:所需要得到的字段
- from_table:表源,该节点的table_name属性为表源的表名。
field_name:字段名,构成查询的条件。其包含的属性介绍如XML串所示(下同)。
- join:联接条件
- join_table:联接的表
- orderby :排序的方法
- groupby:分组条件
- 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)
|