首先感谢PeterXu奉献的《关于SQL语句的自动生成!》一文,读后令我收获颇多;
原文地址:http://blog.csdn.net/peterreg/archive/2008/04/02/2243011.aspx
由于在文中没有找到PeterXu大大编写的调用示例,为了能让大家更好的领会其编程思路,我在这里奉送上相关的调用方法;
假定有一个表:Users,包含3个字段:UserNames、Password、Sex;
下边是我根据PeterXu的代码写的示例:
StringBuilder strsql =new StringBuilder();
//Select语句自动生成
IClause icSel = ClauseFactory.Create("Users", ClauseFactory.Flag.Select);
icSel.Add("UserName",null);//该字段不指定别名
icSel.Add("Password", "密码");//该字段指定别名
icSel.Add("Sex", "性别");//该字段指定别名
icSel.AddWhere("UserName", "cnpoor");//添加查询条件
strsql.Append(icSel.ToString() + "/r/n");
icSel.Clear();
//Insert语句自动生成
IClause icIns = ClauseFactory.Create("Users", ClauseFactory.Flag.Insert);
icIns.Add("UserName", "cnpoor");//第二个参数为插入的内容
icIns.Add("Password", "123");//第二个参数为插入的内容
icIns.Add("Sex", "True");//第二个参数为插入的内容
strsql.Append(icIns.ToString() + "/r/n");
icIns.Clear();
//Update语句自动生成
IClause icUpd = ClauseFactory.Create("Users", ClauseFactory.Flag.Update);
icUpd.Add("UserName", "cnpoor");//第二个参数为更新的内容
icUpd.Add("Password", "123");//第二个参数为更新的内容
icUpd.Add("Sex", "True");//第二个参数为更新的内容
strsql.Append(icUpd.ToString() + "/r/n");
icUpd.Clear();
//Delete语句自动生成
IClause icDel = ClauseFactory.Create("Users", ClauseFactory.Flag.Delete);
//删除条件
icDel.AddWhere("UserName", "cnpoor");//第二个参数为删除条件的内容值
strsql.Append(icDel.ToString() + "/r/n");
icDel.Clear();
textBox1.Text = strsql.ToString();
话题到这里基本算是完了,下面是我对《关于SQL语句的自动生成!》一文的一点扩展思路,有兴趣的可以继续往下看:
因为不同种类数据库支持的SQL语句规范有所不同,而上文的代码也仅是适用于T-SQL系列语句的生成;
因此,我们可以大胆的扩展这个ClauseFactory,使其能自由的选择数据库,从而获得适用于该类型数据库的SQL语句;