機房收費系統之bug是永遠改不完的

來源:互聯網
上載者:User

前言

       機房收費系統,對於我來說已經做了好多次。現在讓我們做導師,真正感覺到受益最大的就是自己。每次在給他們要求什麼的時候,其實是對自己的督促。換種說法就是,你總是在要求別人怎樣怎樣的時候,其實也是在對自己做要求。

       知易行難,所以有些事情需要多次強調。機房收費系統也一樣,又一次的回顧,又一次的測試,讓我有了不同的認識。

問題概述

        這個問題是關於組合查詢的,關於組合查詢,我附一個圖,大家看一就大概能明白這個組合查詢是怎麼回事。

              

       對於裡面的商務邏輯和健壯性判斷這裡我就不說了,遇到的問題是:你說上面的查詢,會查到什麼,和你想查的結果一樣嗎?

       我先說下我想查的結果:首先前兩個進行或運算,然後與第三個進行與運算,所以這樣的結果應該是空才對。

       可是,那隻是我想的結果,但結果卻是出來結果了,這是為什麼呢?

問題解答

       問題就在於資料庫中and和or這兩個關鍵字優先順序是不一樣的。and優先順序要比or的優先順序高,所以出現了與願望不符的結果。這給了我們警示:在寫程式時,儘可能對運算用小括弧進行優先順序劃分。將出錯機會降低到最小。

問題深入

       現在問題來了,怎麼加括弧呢?首先先說一下這個程式沒有修改前的運行規則:

              1. 定義一個字串strSQL="select * from 表明 where"

              2. 如果只按照一個條件查詢,假設這個條件為A,那麼strSQL=strSQL+A,(A為第一個條件的字串)

              3. 如果有兩個條件,第二個條件的字串為B,那麼strSQL=strSQL+B

              4. 如果有三個條件,同3.

              5. 執行strSQL語句。

       現在需要再第一個條件和第二個條件加上括弧。有兩種加法

       第一種

              strSQL+(

              一個條件的話A+)

              兩個條件strSQL-),然後B+)

              這樣在三個條件的時候,前兩個就始終最先運算

       第二種

              再定義一個變數strEndSQL。

              一個條件strEndSQL=strSQL+A,

              兩個條件strEndSQL=strSQL+A+B

              三個條件的時候strEndSQL=strSQL+(+A+B+)+C

       (說明,上面說的這兩種需要大家結合自己的代碼想一想才更清晰,沒有原始碼的可以給我留言,我給你原始碼)

問題深入

       其實問題已經解決了,幹嘛還不停住呢?

       原因就是我感覺這個問題很有代表性。我們都太懶了,組合查詢這個思路,應該是從學生資訊管理系統裡面學的吧。這個思路已經根深蒂固,所以每次遇到此類問題時,大家都往那方面去想,以至於已經出現了問題,首先的第一想法是,我怎麼去修改。

       不得不承認,在修改的過程中,能學到新的知識。例如此例,第一種進行完後,你對字串的操作肯定會更熟悉。但是幹嘛要對自己畫地為牢,固步自封呢?

       這些其實不是我自己一個人的思想結晶,是在給海燕姐測試的時候,遇到的這個問題。我當時是第一種思路,在他做出來後,我們進行交流,我們都沒有想到第二種,只是她的一種我感覺行不通的方法,給了我這個思路。

       這種非技術上的學習,僅僅是看視頻,是學習不到的。通過和他們交流,我感覺我收穫了很多。

總結

       循規蹈矩,固然好。但是能夠突破重圍,體驗另一個世界的美好,又有何不佳呢?不要被以往的思路禁錮住,相似的問題,用相同的解法,可能會出現你想象不到的問題,而當出現問題時,可以試著想另外的解決思路。因為相似不等於相同!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.