首页 新闻 赞助 找找看

怎样去实现一个sql语句拼接的优化呢?

0
[已解决问题] 解决于 2013-12-09 16:31

#region 根据书名,作者或出版社查询             if (!String.IsNullOrEmpty(bookType))             {                 if (!String.IsNullOrEmpty(keyWord))                 {                     switch (bookType)                     {                         case "书名":

                            if (!String.IsNullOrEmpty(StyleBookClassId) && String.IsNullOrEmpty(keyWord))                                 sb.Append(" AND classBook.Book_Name like '" + keyWord.Replace("'", "''") + "%'");                             else                                 sb.Append(" AND  book.Book_Name LIKE '" + keyWord.Replace("'", "''") + "%'");                             break;                         case "作者":                             if (!String.IsNullOrEmpty(StyleBookClassId) && String.IsNullOrEmpty(keyWord))                                 sb.Append(" AND classBook.Book_Author LIKE '%" + keyWord.Replace("'", "''") + "%'");                             else                                 sb.Append(" AND book.Book_Author LIKE '%" + keyWord.Replace("'", "''") + "%'");                             break;                         case "出版社":                             if (!String.IsNullOrEmpty(StyleBookClassId) && String.IsNullOrEmpty(keyWord))                                 sb.Append(" AND classBook.Book_Concern LIKE '" + keyWord.Replace("'", "''") + "%'");                             else                                 sb.Append(" AND book.Book_Concern LIKE '" + keyWord.Replace("'", "''") + "%'");                             break;

                    }                 }             }

            #endregion

问题补充:

如果存在很多if else的话,怎样去写会更加好

banyan.rong的主页 banyan.rong | 初学一级 | 园豆:67
提问于:2013-12-09 15:31
< >
分享
最佳答案
0

你的业务逻辑如果需要这样子,那么建议你还是保持这种写法。如果你想让它好看点儿,那么你可以把语法写的简洁一点儿,如果你为了看起来更清晰,那么建议你每一个条件弄一个小的函数,看起来更加容易理解。总之,你得跟着业务逻辑走。

奖励园豆:5
bitbug | 菜鸟二级 |园豆:470 | 2013-12-09 15:58

好的,谢谢!

banyan.rong | 园豆:67 (初学一级) | 2013-12-09 16:03
其他回答(3)
0

若验证的逻辑是不能改的,那就只有写法上的改变了,把if else 用三元表达示处理,代码结构上更好看一点,量也少那么点,

Zery | 园豆:6151 (大侠五级) | 2013-12-09 15:41

用三元表达式的话,可读性不高吧?

支持(0) 反对(0) banyan.rong | 园豆:67 (初学一级) | 2013-12-09 16:04
0

  #region 根据书名,作者或出版社查询          

          if (!String.IsNullOrEmpty(bookType) && !String.IsNullOrEmpty(keyWord))             {        

         string column = "Book_Name";             

    if (bookType == "作者")               

      column = "Book_Author";           

      else if (bookType == "出版社")           

          column = "Book_Concern";

                if (!String.IsNullOrEmpty(StyleBookClassId))        

             sb.Append(" AND classBook." + column + " like '" + keyWord.Replace("'", "''") + "%'");                   else                 

    sb.Append(" AND  book." + column + " LIKE '" + keyWord.Replace("'", "''") + "%'");        

     }             #endregion

倚窗听雨 | 园豆:202 (菜鸟二级) | 2013-12-09 15:52

谢谢你的回答

支持(0) 反对(0) banyan.rong | 园豆:67 (初学一级) | 2013-12-09 16:04
0

多写几个函数就搞定了,可在主函数里使用条件,也可以在子函数里判断

James.Ying | 园豆:1472 (小虾三级) | 2013-12-09 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册