关于数据库查询,开发问题

11 篇文章 0 订阅
10 篇文章 0 订阅

在开发中难免会遇到多条件查询,那么在做多条件查询的时候,无可厚非肯定会出现判断是否为空的操作,如果五个条件组合判断的话用数组来组合不下25种,那么这时候我们就要换一个思维,利用字符串拼接;
在这里插入图片描述这种条件众多会导致有许多判断条件,这时候就利用:

var siteId = context.Request["siteId"];
var phone = context.Request["phone"];
var qqNumber = context.Request["qqNumber"];
var wechat = context.Request["wechat"];
string code;
string msg;
string sql = "select 管理员基本信息表.*,分站配置中心.SubstationName from 管理员基本信息表 left join 分站配置中心 on 管理员基本信息表.siteId = 分站配置中心.SubstationId where 1=1";
if (!string.IsNullOrEmpty(siteId))
{
    sql += " and siteId='"+siteId+"'";
}
if (!string.IsNullOrEmpty(phone))
{
    sql += " and sitePhone = '"+ phone + "'";
}
if (!string.IsNullOrEmpty(qqNumber))
{
    sql += " and qq = '"+ qqNumber + "'";
}
if (!string.IsNullOrEmpty(wechat))
{
    sql += " and wechat = '"+ wechat + "'";
}
DataTable dt = dbUtil.GetDataSet(sql);
for (int i = 0; i < dt.Rows.Count; i++) {
    siteInfos.Add(new siteInfo()
    {
        siteId = dt.Rows[i]["siteId"].ToString(),
        siteUserName = dt.Rows[i]["siteUserName"].ToString(),
        sitePhone = dt.Rows[i]["sitePhone"].ToString(),
        wechat = dt.Rows[i]["wechat"].ToString(),
        siteBalance = float.Parse(dt.Rows[i]["siteBalance"].ToString()),
        SubstationName = dt.Rows[i]["SubstationName"].ToString(),
        siteStatue = dt.Rows[i]["siteStatue"].ToString(),
        registerTime = dt.Rows[i]["registerTime"].ToString(),
        lastTime = dt.Rows[i]["lastTime"].ToString(),
        siteRole = dt.Rows[i]["siteRole"].ToString(),
        qq = dt.Rows[i]["qq"].ToString(),
    });
}
var data = new { code = 200, msg = "查询成功", data = siteInfos };
JavaScriptSerializer json = new JavaScriptSerializer();
var res = json.Serialize(data);
context.Response.Write(res);
}
public class siteInfo
{
public string siteId { get; set; }
public string siteUserName { get; set; }
public string sitePhone { get; set; }
public string wechat { get; set; }
public float siteBalance { get; set; }
public string SubstationName { get; set; }
public string siteStatue { get; set; }
public string registerTime { get; set; }
public string lastTime { get; set; }
public string siteRole { get; set; }
public string qq { get; set; }
}

这种数据拼接的方式,不为空的时候拼接上去,就不需要利用组合来判断,大大缩短开发复杂程度;
值得注意的是其中的where 1=1这是一个条件,无论它和谁拼接都不会影响结果!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值