博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

用在ObjectDataSource里的一条多条件SQL语句构造

Posted on 2006-07-26 12:20  天轰穿  阅读(1273)  评论(1编辑  收藏  举报
没有多少技术含量,只是自己觉得思路还可以,看不看随便,我只是自己做个笔记!
多看我几篇文章的人就知道我真的很懒,呵呵,我总试图用最少的页来实现最多的功能,所以就有了下面这个多条件SQL语句的需求了,也许你的查询没有条件,也许有一个,也许有两个,但是这总是在你只知道最多条件的情况下产生的,总不至于每一条不同的SQL查询就多一个数据源或者一个页吧?那么最好的办法让SQL条件自己活起来,如果你恰恰遇上这个问题,而正巧还没有解决的话可以看下,其实这个我之所以说没有技术含量是我隐约记得以前一个ASP程序的SQL语句的构造也是很灵活的,只是我忘记具体是怎么做的了,但是我敢肯定这个问题对很多老鸟(不到虾级别)来说都不是什么问题!废话一堆,看代码了!

public DataTable dt(string aid,string calss,string sh)
    
{
        
string sql = "select * from link";//先初始化一个不带任何条件的SQL语句

        
if (aid != null)
        
{//如果地区条件不为空
            sql += " where aid="+aid+"";//因为是第一次加载条件,所以加上where
            if (calss != null)
            
{//如果类别也不为空
                sql += " and calss='"+calss+"'";//这里因为是加载到地区条件后面所以就不能where了,而是直接and
            }

            
if (sh != null)
            
{//以下不用解释了,呵呵,既然你都看这里了,至少表示你肯定对sql语句还是懂的了,只是提醒一句,记得前面的空格,呵呵,因为是加载条件,而本身语句前面都不带空格的
                sql += " and sh="+sh+"";
            }

        }

        
if (calss != null)
        
{
            
if (aid == null)
            
{
                sql 
+= " where calss='"+calss+"'";
            }

            
if (sh != null)
            
{
                
if (aid == null)
                
{
                    sql 
+= " and sh="+sh+"";
                }

            }

        }

        
if (sh != null)
        
{
            
if (aid == null&&calss==null)
            
{
                sql 
+= " where sh=" + sh + "";
            }

        }

        OleDbConnection con 
= new OleDbConnection(constring);
        OleDbDataAdapter oda 
= new OleDbDataAdapter();
        oda.SelectCommand 
= new OleDbCommand(sql, con);
        DataSet ds 
= new DataSet();
        oda.Fill(ds, 
"link");
        
return ds.Tables["link"];
    }