动态组装sql语句时使用str = where = "1=1"; 然后再进行追加对性能的影响

      现在还是有很多软件开发过程中,程序员使用的还是动态的在程序中组装sql语句,然后通过自己封装的DBhelper来执行sql语句,这是没有问题的,但是在有的时候我们不确定在某一次查询的时候,是否需要加上where条件进行筛选,这个时候有一种很便捷的方式就是,默认给sql语句添加条件where 1=1,如果后续有条件需要加入,只需要追加“ and  xx=xx”即可,这样是免去了到底应该追加 "where xx=xx" 还是应该追加“and xx=xx”这种判断。但是1=1这个恒为真的条件,会让数据库中建立的索引失效,带有1=1这种条件的筛选会强迫数据库进行全表查询,再数据量大的情况下全表查询是相当损耗性能的。那么应该怎么解决呢。 

private void doQuery()
{
    Bool hasWhere = false;
    StringBuilder sql = new StringBuilder(" SELECT * FROM T_Employee");
    if(工号复选框选中)
    {
        hasWhere = appendWhereIfNeed(sql, hasWhere);
        sql.appendLine("FNumber BETWEEN '"+工号文本框1内容+"' AND '"+工号文本框2内容+"'");
    }
    if(姓名复选框选中)
    {
        hasWhere = appendWhereIfNeed(sql, hasWhere);
        sql.appendLine("FName LIKE '%"+姓名文本框内容+"%'");
    }
    if(年龄复选框选中)
    {
        hasWhere = appendWhereIfNeed(sql, hasWhere);
        sql.appendLine("FAge BETWEEN "+年龄文本框1内容+" AND "+年龄文本框2内容);
    }
executeSQL(sql);
}
private bool appendWhereIfNeed(StringBuilder sql, bool haswhere)
{
    if (haswhere == false)
    {
        ql.AppendLine("where");
    }
    else
    {
        sql.AppendLine("and");
    }
    return true;
}
也就是解决是该添加where 还是添加and 的问题

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值