c整理學(xué)習(xí)
發(fā)布時(shí)間:2020-09-13 來(lái)源: 精準(zhǔn)扶貧 點(diǎn)擊:
C #篇:
1 、目標(biāo)平臺(tái)得選擇 64 位操作系統(tǒng)在編譯 VS里得程序時(shí),根據(jù)需要設(shè)置項(xiàng)目屬性得“目標(biāo)平臺(tái)”為 x86。如果設(shè)置為 AnyCPU,則在VS 2005 里面就是不能“編輯并繼續(xù)”得。
—-在選擇 x86 與 AnyCPU都可以在32 位操作系統(tǒng)上使用。
——選擇x86在 64 位服務(wù)器上運(yùn)行,可能會(huì)造成類(lèi)庫(kù)無(wú)法加載得問(wèn)題。此問(wèn)題在后文 IIS 經(jīng)驗(yàn)中解釋。
2 、取 DataTable 或者Da taGrid View 里面值得兩種常用方法: dt、Rows[i]、Cells[”ID”]、Value、ToString(); dt、Rows[0][”Name"]、ToString(); 前者需要從 Value 中取值,使用起來(lái)不就是太方便.后者且不能加 Value。
——所有得中括號(hào)中都可以使用序號(hào)(從 0 開(kāi)始)或就是字段名(列名、行名)
3 、如果沒(méi)有使用Linq (一直都用得2、0 框架„„), 可以使行 用此法來(lái)寫(xiě)執(zhí)行 S QL. 如: string strSQL = string、Format("Insert table_1 values("{0}', "{1}',{2},{3})" 如果就是varchar 類(lèi)型,必須使用'';如果就是 int,目前發(fā)現(xiàn)既可使用’"也可以不使用,往往寫(xiě)腳本,嫌麻煩,就都帶上了"',貌似執(zhí)行上不會(huì)有問(wèn)題,但不知道性能會(huì)不會(huì)有所下降.如果有知道得朋友請(qǐng)?jiān)谠u(píng)論區(qū)說(shuō)下咯。
——有朋友評(píng)論說(shuō)這個(gè)容易被注入式攻擊。查了下避免注入式攻擊得方法:1、使用存儲(chǔ)過(guò)程;2、參數(shù)化 SQL 語(yǔ)句。
——以下就是使用參數(shù)化 SQL 語(yǔ)句得方式:
Sqlmand mand = new Sqlmand(”select * from UserInfo where sex=sex and age>age”, connection);
SqlParameter parameter = new SqlParameter(”age", SqlDbType、Int);//注意UserInfo 表里age字段就是 int類(lèi)型得
parameter、Value = 30;
mand、Parameters、Add(parameter);//添加參數(shù)
SqlDataAdapter adapter = new SqlDat(yī)aAdapter(mand);
。础LL 引用了,但就是在代碼里面還就是無(wú)法調(diào)用。
嘗試在 DLL 得屬性里面設(shè)置使用特定版本為 False。
5 、類(lèi)庫(kù)里得方法在調(diào)用得時(shí)候,如何讓方法上面顯示自定義說(shuō)明? 勾選一下項(xiàng)目:屬性——生成—-XML 文檔文件
-—使用類(lèi)庫(kù)得時(shí)候,把對(duì)應(yīng)得 XML 也拷貝得相同目錄,這樣會(huì)在VS中瞧到類(lèi)庫(kù)函數(shù)得自定義說(shuō)明.前提就是代碼里面使用“///”生成注釋.
6 、博友分享:VS2010 在新建、net 4、0項(xiàng)目時(shí),經(jīng)常會(huì)默認(rèn)一個(gè)Clent Profi le得東東, 經(jīng)常出現(xiàn)問(wèn)題。。。切換為標(biāo)準(zhǔn)框架即可。
VS2005 不存在這個(gè)問(wèn)題,VS2013 好像也不存在這個(gè)問(wèn)題。
7 、未能加載程序集 這個(gè)問(wèn)題得范疇過(guò)于龐大,能夠造成這方面問(wèn)題得原因可能有很多,我記得比較分散,后面找到了陸續(xù)補(bǔ)充。
。ǎ)版本不匹配。
。ǎ)類(lèi)庫(kù)生成 x86 還就是x64 還就是 AnyCPU,最好能夠做到目標(biāo)平臺(tái)保持一致。
(3)兩個(gè)項(xiàng)目引用路徑不同,或生成個(gè)路徑不同。
8 、* ** 、dll 標(biāo)記為系統(tǒng)必備,必須對(duì)其進(jìn)行強(qiáng)簽名。
。1)首先,參考這個(gè)地方.; (2)其次,出現(xiàn)這個(gè)問(wèn)題,很有可能就是因?yàn)閮蓚(gè)項(xiàng)目調(diào)用了相同得 DLL,但就是兩個(gè) DLL 版本不同,需要使這兩個(gè)版本相同即可。
9 、如何把Con sol e程序修改為Wi nForm 程序。
。1)修改 Program、cs,按照 Winform 程序得方式來(lái)修改即可。
。ǎ玻┬薷膽(yīng)用程序得屬性,在應(yīng)用程序—-輸出類(lèi)型中修改為 Windows 應(yīng)用程序.
10 、Da ta Gri dVi ew在使用其單擊、雙擊事件時(shí),如果需要用 使用 Row In dex, 需要判斷其就是否小于 0 (表頭), 否則會(huì)報(bào)錯(cuò)。
1 1、當(dāng)多個(gè)窗體都設(shè)置了 To pMost, 則只有最先設(shè)置得窗體在頂層。
1 2、了 引用了 D LL ,但就是編譯得時(shí)候還就是提示沒(méi)有找到命名空間. 背景:這個(gè)問(wèn)題很坑,很難發(fā)現(xiàn)問(wèn)題所在。如一個(gè)解決方案中有項(xiàng)目A,生成類(lèi)庫(kù),testA、dll;還有項(xiàng)目 B,生成類(lèi)庫(kù),testB、dll。如果項(xiàng)目 B 得程序集名稱(chēng)與默認(rèn)命名空間設(shè)置成了 testA,則編譯不會(huì)報(bào)錯(cuò),但就是您這時(shí)候想調(diào)用 testB中得方法時(shí),會(huì)發(fā)現(xiàn)根本找不到,全就是 testA得方法!
解決辦法:右鍵查瞧項(xiàng)目(也有可能就是相關(guān)項(xiàng)目)得程序集名稱(chēng)與默認(rèn)命名空間。就是否與類(lèi)庫(kù)名稱(chēng)一致。
13 、如何修改 VS2008 轉(zhuǎn)化后得項(xiàng)目為 200 5版。
如上圖:修改第一行 Format Version 為9、00、修改第二行為Visual Studio 2005。
14 、 Da taG ridVi ew 時(shí)間格式設(shè)置 dataGridView1、Columns[n]、DefaultCellStyle、Format = ”yyyy-MM-dd”; 15 、當(dāng)前不會(huì)命中斷點(diǎn)。源代碼與原始版本不同問(wèn)題得解決方法 坑到爆得問(wèn)題來(lái)了……這個(gè)問(wèn)題出現(xiàn)大多就是因?yàn)榛靵y得項(xiàng)目引用。以下提供幾個(gè)可能有用得解決方案: 方案一:在VS 菜單得生成中,選擇“清理解決方案",然后重新生成解決方案。
方案二:實(shí)際上有比這個(gè)辦法更好得辦法,就就是將出問(wèn)題得文件用 notepad 打開(kāi),然后另存為 Unicode 編碼,覆蓋原來(lái)得文件。
方案三:通過(guò)重新格式化出問(wèn)題得源文件亦可以解決,即在 VS2005 中選擇 “編輯”-—〉“高級(jí)”——〉“設(shè)置選定內(nèi)容得格式”. 以上三個(gè)方案參考自:
實(shí)際上我都用了,沒(méi)用!
最后解決辦法得: 根據(jù)分析,以及這篇文章得內(nèi)容,出現(xiàn)此問(wèn)題就是因?yàn)槲抑苯右昧耍腖L,而不就是直接引用項(xiàng)目。DLL還未重新編譯得時(shí)候,直接運(yùn)行了程序,則造成 DLL內(nèi)容還沒(méi)有更新,調(diào)試無(wú)法運(yùn)行到斷點(diǎn)。
1 6、fl oat(yī) 、dou ble 與 與 d ecimal 得區(qū)別 #region float 單精度浮點(diǎn) 32bit, double 雙精度浮點(diǎn)64bit, decimal就是高精度 128bit,浮點(diǎn)型。
。鎙oat double 就是 基本類(lèi)型(primitive type),decimal 不就是。
float 有效數(shù)字 7 位,范圍
±1、5 × 10E−45 to ±3、4 × 10E38 double 有效數(shù)字 15/16 位,范圍 ±5、0 × 10 E−324 to ±1、7 × 10E308
decimal 有效數(shù)字 28/29 位,范圍 ±1、0 × 10E−28 to ±7、9 × 10E28( E —- 下接幾次方)
decimal 得有效位數(shù)很大,達(dá)到了128位,但就是表示得數(shù)據(jù)范圍卻比 float 與 double 類(lèi)型小. 使用得時(shí)候會(huì)對(duì)計(jì)算時(shí)得性能有影響。
常數(shù)寫(xiě)法:
float f = 12、3F;
(帶 F)
double x=12、3;
(不帶就就是 double)
decimal d = 12、30M; (帶M)
浮點(diǎn)數(shù)運(yùn)算會(huì)有精度損失問(wèn)題,有精度損失時(shí)程序不會(huì)報(bào)告,要程序員自己注意。
#endregion 17 、如何清空Str ingBuilder
1、Remove 例:
StringBuilder val = new StringBuilder();
val、Append(”、、、、");
。鯽l、Remove(0,val、Length);//清空
2、Replace
。觮ringBuilder val = new StringBuilder();
val、Append("、、、、");
val、Replace(val、ToString(), "”);//清空
3、Length
StringBuilder val = new StringBuilder();
。鯽l、Append("、、、、");
val、Length = 0;//清空經(jīng)過(guò)測(cè)試第三種效率更高,推薦用第三種!
SQL 篇 1 、有關(guān) SQL 中 中 Joi n得問(wèn)題。
當(dāng) left join得那個(gè)表(子表),on得字段存在兩條,那么查詢(xún)出來(lái)得結(jié)果會(huì)分為兩條。
—-所以對(duì)于子表內(nèi)容掌控不準(zhǔn)確,很可能會(huì)查詢(xún)出不符合需求得結(jié)果。
例子: (1)兩個(gè)表得內(nèi)容就是
。2)left join 得結(jié)果
以 2、同一張表可以 Left Joi n兩次
-—比如主表 A 為大掃除任務(wù)安排表,其中包含“掃地得學(xué)生 ID",“倒垃圾得學(xué)生ID”,可以通過(guò)兩次關(guān)聯(lián)學(xué)生信息表B,來(lái)在主表中查詢(xún)出學(xué)生姓名. ——以下例子與上面得舉例無(wú)關(guān)。僅供參考。
3 、Union 得時(shí)候,如果對(duì)應(yīng)得兩個(gè)字段類(lèi)型不同,必須進(jìn)行轉(zhuǎn)換, 否則會(huì)出錯(cuò).
如上圖 convert。注意使用 union all 可以顯著提高速度,這樣得話(huà),不會(huì)對(duì)查詢(xún)結(jié)果進(jìn)行排序。
4 、S QL
Serv er 中鏈接服務(wù)器得使用方法 應(yīng)用背景:應(yīng)用軟件包含多個(gè)數(shù)據(jù)庫(kù)服務(wù)器,但就是某個(gè)查詢(xún)需要從兩個(gè)數(shù)據(jù)庫(kù)服務(wù)器得數(shù)據(jù)庫(kù)中查詢(xún)數(shù)據(jù)得。
使用說(shuō)明:
(1)添加一個(gè)鏈接服務(wù)器。
。鍃ec sp_addlinkedserver server=’serverontest’,provider="sqloledb’,srvproduct="’,datasrc="101、123、10、112'
(2)添加登錄方式 EXEC sp_addlinkedsrvlogin rmtsrvname = "serverontest’, useself = ’false', locallogin = "sa", rmtuser = 'sa’, rmtpassword = "passwordofsa’ (3)以上兩個(gè)語(yǔ)句中,server 為服務(wù)器得別名,datasrc為要鏈接得目標(biāo)數(shù)據(jù)庫(kù)得連接串,rmtsrvname 為別名,locallogin為本地登錄得用戶(hù)名,rmtuser 與rmtpassword為要鏈接得目標(biāo)數(shù)據(jù)庫(kù)得登錄用戶(hù)名與密碼。
。4)添加完鏈接服務(wù)器之后,可以通過(guò) select * from sys、linked_logins 與 select * from sys、servers 來(lái)查瞧已經(jīng)添加得鏈接服務(wù)器與登錄角色。
(5)添加完鏈接服務(wù)器后,使用 select * from 別名、庫(kù)名、dbo、表名 來(lái)對(duì)其中得數(shù)據(jù)進(jìn)行查詢(xún)。
(6)刪除鏈接服務(wù)器登錄映射與鏈接服務(wù)器得方法:
exec sp_droplinkedsrvlogin "serverontest’ ,"sa’
exec sp_dropserver "serverontest’
思想以及設(shè)計(jì)理念:
。、邏輯刪除與物理刪除得概念? 物理刪除時(shí)真正得刪除了,邏輯刪除還保留數(shù)據(jù)在數(shù)據(jù)庫(kù)中得位置,但就是修改其刪除標(biāo)志為已刪除狀態(tài)(貌似這個(gè)在大學(xué)里面就學(xué)了„„)
2 、在 UI 層( 用戶(hù)操作界面),如果出錯(cuò)了, 或者操作失敗了, 應(yīng)該提醒用戶(hù)下一步應(yīng)該做什么. 如:當(dāng)用戶(hù)進(jìn)行操作 B 得時(shí)候,需要先開(kāi)啟選項(xiàng) A。設(shè)當(dāng)前選項(xiàng) A 為關(guān)閉狀態(tài),用戶(hù)進(jìn)行操作 B,此時(shí)應(yīng)提示:“操作失敗,選項(xiàng) A 未啟用,請(qǐng)到 XXX 設(shè)置中開(kāi)啟選項(xiàng)A"。在某些應(yīng)用中,甚至可以增加直接跳轉(zhuǎn)到設(shè)置得地方,或者直接修改設(shè)置。根據(jù)需要而定。
——提醒用戶(hù)改做什么,個(gè)人認(rèn)為就是應(yīng)該得,體現(xiàn)友好度。但就是不應(yīng)該把代碼中具體得異常暴露出來(lái),具體異常應(yīng)該記錄日志,并使用異常編碼,在文檔中、代碼中管理起來(lái)。
3 、當(dāng)可以確定兩份程序完全一致,但就是怎么運(yùn)行結(jié)果都不一致,先檢查配置文件就是否不同。
4 、如何查瞧進(jìn)程得端口號(hào). 命令行輸入:netstat —ano 5 、如何使用命令行安裝 Win dows 服務(wù) %SystemRoot%\Microsoft、NET\Framework\v2、0、50727\installutil、exe E:\myService\ServiceTest、exe
Net Start ServiceTest sc config ServiceTest start= auto 前提就是,您所要安裝得服務(wù),所在路徑不能包含空格.如常見(jiàn)得 Program Files,就會(huì)造成安裝失敗. 如果安裝得時(shí)候,命令行窗口一閃而過(guò)沒(méi)有瞧到什么情況,可以自行在命令提示符里面執(zhí)行以上得腳本以查瞧報(bào)錯(cuò);蛘咴诮Y(jié)尾加上 pause
P S:一個(gè)一直支撐我得寶貴經(jīng)驗(yàn):
哈佛有一個(gè)著名得理論:人得差別在于業(yè)余時(shí)間,而一個(gè)人得命運(yùn)決定于晚上8點(diǎn)到 10 點(diǎn)之間。每晚抽出 2 個(gè)小時(shí)得時(shí)間用來(lái)閱讀、進(jìn)修、思考或參加有意得演講、討論,您會(huì)發(fā)現(xiàn),您得人生正在發(fā)生改變,堅(jiān)持?jǐn)?shù)年之后,成功會(huì)向您招手。
相關(guān)熱詞搜索:整理 學(xué)習(xí)
熱點(diǎn)文章閱讀