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