在寫dal層的時候,對資料庫的操作僅用到增刪改查,卻要寫那麼多方法來應對功能上的需求,為了圖個方便,我進行了一次大膽的嘗試:將查詢內容全部引數化,提高sql語句的功能。**思路如下:
//根據需要更新商品某欄位
public int updategoods(goodsinfo goods, string field,object value)
;return sqlhelper.excutenonquery(sql, sp);
}
剛開始**大概就是這樣吧,我想通過傳參把要查的字段寫活,應該能用,實際測試**錯了。究其原因,問題出在了sql語句上:字段(field)是字串的格式,呼叫方法時傳進去的值是帶引號的,在sqlserver中處理(有去引號的步驟)這條語句時將本想寫的字段看成了字串處理,沒有可識別的字段,所以就出現了有引數值沒有對應欄位的尷尬。
把原因定位到了引號上,就要從引號出入手,想了想之前vb裡用加號連線sql語句,就試了試,**就成了這樣:
//根據需要更新商品某欄位
public int updategoods(goodsinfo goods, string field,object value)
;return sqlhelper.excutenonquery(sql, sp);
}
這時候傳進來的field沒有引號了,就成了要查的欄位名。這個方法的功能也就更強大了。乙個引號就能決定語句的可用性,由此可見拼接的重要性。還可以把表名也引數化,在這個方法的功能擴大的同時,需要的引數個數也變多了。有興趣的話可以嘗試一下。 sql語句與mysql MySQL sql語句
mysql varchar型別字段 0取出的是什麼 偶然發現乙個奇葩問題,varchar型別字段 0取出的東西什麼都有,有中文,有數字字母組合,但是卻不是全集,這是怎麼回事?當比較數字和varchar時,mysql會把varchar轉換為數字,首字元為數字0的,或者其他字元的都會轉換為0,varch...
這樣寫sql避免索引失效
合理地對資料表加索引可以大大加快資料的訪問效率,但索引也不是對任何查詢都有效,如果sql的結構不當,也會發生索引失效。所以為避免採坑,寫下此文,作為記錄。下面的例子是在mysql中建立的一張表,建表語句如下 create table user info id bigint 32 not null,n...
萬能SQL語句
在前天的課上,聽了這麼乙個詞 萬能查詢.剛開始還不知道怎麼一回事,知道老師把幾個毫無頭緒,以為要寫很多個方法的程式實現的時候,我真是傻眼了.唉,總結一下,以後這一點真的很重要呢.包括全域性統籌包括 的清晰健壯,是我見過的最好的解決方法了.這樣,我對於 sql 語句的理解更進了一步.更覺得 sql 語...