今天被 雷 到了

2022-04-09 20:59:17 字數 841 閱讀 7938

花了2個小時除錯乙個不是bug的bug,被前輩的地雷給炸到了.

事情由來:大家都熟悉datatable.select()方法,這個方法的作用相當於sql中的select,

此方法的引數是個string型別

,但是內容則是個expression,即相當於sql中where 後面的簡單條件判斷子句,

但是先前的程式是這樣子寫的:

code

tbltablename.select(

string

.format(

"sectionid=

", sectionid))

一開始sectionid都是<100的數,sectionid在資料庫中是nvarchar型別,在xml中對映為string型別,當sectionid>100時,這個方法就讀不出sectionid>100的資料了,其餘<100的都能讀出,且dataset裡也顯示有這個表的所有資料,但是在資料庫中用sql語句也能讀出正確的資料來,經過排查發現問題出在表示式上.正確的為:

code

tbltablename.select(

string

.format(

"sectionid=''

", sectionid))

原因是:string型別的查詢都要加引號以區分資料是字元還是數字.因為欄位是字元型別,所以不管在哪都要加引號,雖然有時在資料庫中string型別的資料為數字時這種情況對查詢沒影響,但是在程式當中就不一定是正常的,當資料變化時就成了乙個bug了.

吸取此教訓,寫程式時一定要小心.是字元型別的查詢表示式一定要加引號,

今天終於來到了

不知道為什麼,似乎特別期盼今年的生日,不過好像也沒發生什麼鐵別的事情。從今天凌晨開始陸續接到家人和朋友們的祝福,真是感到很幸福,在這裡再次向大家道謝了,昨天晚上兩點才睡著,還第一次給電台發了條簡訊,呵呵。又過了一年,又長了一歲,逐漸開始要對年齡有概念了,雖然說是六一生人,但也不能總是孩子的心態,年齡...

190118 今天學到了什麼?

pem檔案在使用ssh i 匯入時,確保pem是只有所有者可讀許可權,即chmod 400 xx.pem,也沒認真看到命令的錯誤提示,因為多次嘗試一直錯誤,有些麻木 如何在兩個主機之間傳檔案,前不久學到了乙個sz rz,都是和被登入主機和主動登入主機之間傳檔案,現在兩台互不相干的主機之間卻不會傳!s...

OH My Godness 被點到了

點名的人 媽媽呀 混了那麼長時間的internet了,總算被點到了 高興呀 不容易呀 廢話少說,繼續遊戲.做人要很厚道的 規則 1 被點到名字的要在自己的部落格或者空間上寫下答案,所有問題都要真實回答,並且要將這幾個題目傳給你的七個好朋友,通知對方 你被點名了 2 這七個人要在部落格或者空間上註明是...