大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          ASP.NET學習筆記--01

          Posted on 2006-08-07 17:51 大大毛 閱讀(324) 評論(0)  編輯  收藏 所屬分類: ASP.NET

          ???剛剛開始學習ASP.NET,環境:XP,VS2005,SQLServer2000,學習資料:北大青鳥的視頻教程

          ???ASP.NET與ASP的區別
          ??????asp.net 運行于 .net 框架之上,經過了偽編譯,而 asp 則是直接運行在IIS上的,在調用時由DLL進行解釋;
          ??????asp.net 支持三種開發語言:vb.net,c#,j#,而 asp 僅支持 vbscript 的語法;
          ??????asp.net 提供了控件支持,而 asp 則沒有;
          ??????asp.net 支持OOP,代碼也是按類來組織的,asp 只能依靠精巧的代碼實現;
          ??????asp.net 在頁面的處理上采用了VB的事件驅動,大大簡化了開發難度,asp 依靠的是手工驅動;
          ??????asp.net 提供的VIEWSTATE機制,使得頁面元素可以保持原有的值,asp 必須依靠手工代碼;
          ??????asp.net 使用了代碼分離,asp 則沒有,現在老板就能看清楚你寫的那堆垃圾在哪兒了;
          ??????asp.net 的IDE功能上強大許多,不過在HTML元素的設計上成了一只雞肋,許多地方俺還是習慣手工改寫;

          ???ASP.NET提供的控件
          ??????提供的常用控件都在VS工具箱的"標準"及"HTML"欄中,所謂標準控件就是指服務器控件,一拖出來就有個 runas="server" 的屬性,當然HTML控件也可以加上這個屬性變身為服務器控件,一旦擁有這個runas那么該控件就會成為類的一項屬性,在類成員中使用this指針就可以直接引用,果然是方便快捷。不過界面元素的動作也相應著發生了變化,如果是普通的HTML元素,那么響應它事件的只能是本地 script 代碼,而一旦成為服務器控件,那么所有針對它的事件響應都會在服務器端完成。

          ???常用的事件:
          protected?void?Page_Load(object?sender,?EventArgs?e)?{
          }
          ??????這個事件最為常用,在設計器中雙擊頁面就會切到該事件方法中來。該事件發生在頁面每次被裝載時,不過這里的Load跟本地App的Load不一樣,由于HTTP的特性決定了客戶/服務端的聯接不可能是持續和雙向的。因此客戶端瀏覽器每發一次請求,服務端就會Load頁面一次。
          ??????這個事件通常配合 Page.IsPostBack 屬性使用,該屬性在Load完成之后才會被設為 true 值,因此只有第一次的Load,該屬性值才為 false,看教程中的示例,需要初始化環境時,需要將初始化代碼置入 if(!Page.IsPostBack) 塊中。

          protected?void?Page_Init(object?sender,?EventArgs?e)?{
          }
          ??????Page_Init 事件在 Load 事件之前發生,頁面在加載時的順序是 控件Init(),頁面Init(),頁面Load(),控件Load()


          ???ASP.NET從提交的數據中取值
          1? string?userName?=?Request["userName"].ToString();

          2? string?userName?=?Request.Form.Get("userName");

          3? string?userName?=?Request.QueryString["userName"];

          ??????取值的方法與 asp 相同。
          ??????第1行方法適用于 Post/Get 兩種提交方式;第2行只能用于 Post 提交,這里使用了集合的Get方法;第3行只能用于 Get 提交,這里使用另外一種獲取集合成員的方法。

          ???ASP.NET查詢MsSQL數據庫
          ??????需要引用的命名空間(相當于JAVA中的包):System.Data.SqlClient;
          ??????步驟:
          ?????????1.新建一個 SqlConnection 連接對象,并打開;
          ????????????new SqlConnection("server=服務的地址;database=數據庫名;uid=sa;pwd=");
          ????????????con.Open();
          ?????????2.新建一個 SqlCommand 命令對象;
          ????????????new SqlCommand(SQL語句,con);
          ?????????3.通過調用 SqlCommand 對象的方法獲得數據。
          ????????????例如:
          ????????????SqlDataReader sdr = cmd.ExecuteReader();???//獲得一個只向前的游標
          ????????????while(sdr.Read()) {
          ???????????????...
          ????????????}
          ?????????4.釋放資源
          ????????????使用 using 語句,屬于 .net 的專有語法了,在塊的結束將由 using 語法調用 IDisposable?接口定義的 Dispose()方法。因此包含在 using 語句內的對象都應該實現 IDisposable 接口。
          ????????????使用?finally?,這個方法還是比較容易接受一些,try/catch/finally組合除了可以釋放資源外還可以捕獲異常。
          ?????????查了一下資料,MS將連接池也傻瓜了一把(只有使用System.Data.SqlClient包時),除非在 SqlConnection 對象的連接字串中顯式指定,否則自動配置連接池。因此在 SqlConnection 對象的使用上應該做到隨手關閉的好習慣,呵。

          i am ddm

          主站蜘蛛池模板: 延吉市| 洛南县| 师宗县| 涪陵区| 静海县| 离岛区| 确山县| 潞西市| 泽普县| 且末县| 玉环县| 汶川县| 天等县| 茌平县| 淮滨县| 岳西县| 怀柔区| 隆德县| 峨边| 额尔古纳市| 泸西县| 晴隆县| 宜城市| 扎赉特旗| 嵊泗县| 汾阳市| 广州市| 无棣县| 石泉县| 湖口县| 镇雄县| 本溪市| 临武县| 三河市| 涟源市| 静海县| 霍林郭勒市| 射洪县| 雷波县| 皋兰县| 罗甸县|