在数据库的编程中,常常要对数据库的数据根据条件查询,查询条件生成器正是因此而生。
一、查询条件生成器源码
查询条件生成器由以下六个文件组成
1、接口IFilter.cs
- using System;
- namespace SearchFilter
- {
- /// <summary>
- /// IFilter 的摘要说明
- /// 描述: 定义属性
- /// 作者: xlFancy
- /// 日期: 2008.05.10
- /// 版本: 1.0.0.0
- /// </summary>
- public interface IFilter
- {
- string Name { get;}
- string Text { get;}
- DataType DataType { get;}
- string CompareCode { set;get;}
- string LogicalCode { set;get;}
- string BracketCode { set;get;}
- string Value { set;get;}
- }
- }
2、接口IFilterString.cs
- using System;
- namespace SearchFilter
- {
- /// <summary>
- /// IFilterString 的摘要说明
- /// 描述: 定义属性,索引,方法
- /// 作者: xlFancy
- /// 日期: 2008.05.10
- /// 版本: 1.0.0.0
- /// </summary>
- public interface IFilterString
- {
- int FieldCount { get; }
- IFilter this[int Index] { set; get; }
- IFilter this[string Key] { set; get; }
- /// <summary>
- /// 返回查询条件表达式,能自动删除错误的或不匹配的左括弧、右括弧
- /// </summary>
- string FilterText { get; }
- void FilterClear();
- }
- }
3、数据类型枚举EnumConst.cs
- using System;
- namespace SearchFilter
- {
- /// <summary>
- /// DataType 的摘要说明
- /// 描述: 定义数据类型
- /// 作者: xlFancy
- /// 日期: 2008.05.10
- /// 版本: 1.0.0.0
- /// </summary>
- public enum DataType
- {
- /// <summary>
- /// 布尔类型
- /// </summary>
- Boolen,
- /// <summary>
- /// 日期类型
- /// </summary>
- DataTime,
- /// <summary>
- /// 字符类型
- /// </summary>
- String,
- /// <summary>
- /// 数值类型
- /// </summary>
- Number
- }
- }
4、实现接口IFilter类Filter.cs
- using System;
- namespace SearchFilter
- {
- /// <summary>
- /// Filter 的摘要说明
- /// 功能: 实现IFilter所定义的属性
- /// 作者: xlFancy
- /// 日期: 2008.05.10
- /// 版本: 1.0.0.0
- /// </summary>
- class Filter:IFilter
- {
- private string _name = "";
- private string _text = "";
- private DataType _datatype = DataType.String;
- private string _comparecode = "LIKE";
- private string _logicalcode = "";
- private string _bracketcode = "";
- private string _value = "";
- /// <summary>
- /// 初始化供查询的字段
- /// </summary>
- /// <param name="FieldName">字段名称</param>
- /// <param name="FieldText">字段文本,用于显示</param>
- /// <param name="FieldType">字段类型,只能是DataType枚举值</param>
- public Filter(string FieldName, string FieldText, DataType FieldType)
- {
- _name=FieldName;
- _text=FieldText;
- _datatype=FieldType;
- }
- public string Name { get { return _name; } }
- public string Text { get { return _text; } }
- public DataType DataType { get { return _datatype; } }
- public string CompareCode
- {
- get { return _comparecode; }
- set { _comparecode = value; }
- }
- public string LogicalCode
- {
- get { return _logicalcode; }
- set { _logicalcode = value; }
- }
- public string BracketCode
- {
- get { return _bracketcode; }
- set { _bracketcode = value; }
- }
- public string Value
- {
- get
- {
- if (this.CompareCode =="LIKE" || this.CompareCode =="NOT LIKE")
- {
- return string.Format("'%{0}%'", _value);
- }
- else
- {
- if (this.DataType == DataType.Boolen || this.DataType == DataType.Number) return _value;
- else return string.Format("'{0}'", _value);
- }
- }
- set { _value = value; }
- }
- }
- }
5、实现接口IFilterString类FilterString.cs
- using System;
- using System.Text;
- using System.Collections;
- namespace SearchFilter
- {
- /// <summary>
- /// FilterString 的摘要说明
- /// 功能: 实现IFilterString所定义的属性,索引,方法
- /// 作者: xlFancy
- /// 日期: 2008.05.10
- /// 版本: 1.0.0.0
- /// </summary>
- public class FilterString:IFilterString
- {
- private int _count=0;
- private IFilter[] _filter;
- private Hashtable _result = new Hashtable();
- /// <summary>
- /// 初始化查询条件生成器
- /// </summary>
- /// <param name="FieldCount">提供选择的字段数量</param>
- public FilterString(int FieldCount)
- {
- _count=FieldCount;
- _filter=new Filter[FieldCount];
- }
- public int FieldCount { get { return _count; } }
- public IFilter this