美文网首页SQL用法程序员
SqlHelper中IN集合场景下的参数处理(续)

SqlHelper中IN集合场景下的参数处理(续)

作者: buguge | 来源:发表于2016-12-13 09:51 被阅读22次

    今天早上刷牙时,灵光一现,对于昨天的方案,不需要通过借助or或union的方式来更改sql的in了,即,可以直接生成如下的sql语句:

    select * from T_AlipayNotityRecord where trade_status=@trade_status and trade_no in(@no0,@no1,...)
    

    程序代码在上面的基础上稍做处理:

    public DataTable GetAlipayNotifyRecords(AlipayPaymentStatus status, params string[] trade_no)
    {
        string sql = @"select * from T_AlipayNotityRecord where trade_status=@trade_status and trade_no in({0})";
    
        List<SqlParameter> paramList = new List<SqlParameter>()
    {
            new SqlParameter("@trade_status",status.ToString()), 
    };
        string sql1 = "";
        for (int i = 0; i < trade_no.Length; i++)
        {
            ** sql1 += ",@no" + i; **
            paramList.Add(new SqlParameter("@no" + i, trade_no[i]));
        }
        sql = string.Format(sql, sql1.Substring(",".Length));
    
        var ds = SqlHelper.SqlDataSet(ConfigFile.PayCenterConnection, sql, CommandType.Text, paramList.ToArray());
        if (ds == null || ds.Tables.Count == 0)
            return null;
        return ds.Tables[0];
    }
    

    这样子生成的sql就很直观了。比上面方案的还简短。

    办法总比困难多,这话一点不假!

    about bug.jpg

    相关文章

      网友评论

        本文标题:SqlHelper中IN集合场景下的参数处理(续)

        本文链接:https://www.haomeiwen.com/subject/gavvmttx.html