標籤:
1. ado.net步驟:
一:倒入命名空間
using System.Data;
using System.Data.sqlclient;
二:第一個模型 int ExecuteNonQuery();返回受影響的行數
準備連接字串
準備sql語句
建立連線物件(sqlconnection)
建立執行對象 (sqlcommand)
開啟串連
執行操作
關閉
整合:
string connStr="server=.;database=機器名或ip或執行個體名;uid=撒;pwd=123(integrated security=true);";
string sql="";
int count;
using(Sqlconnection con=new Sqlconnection(connStr))
{
using(SqlCommand cmd=new SQlcommand(sql,con))
{
con.open();
int count=cmd.ExecuteNonQuery();
}
}
2.串連池
3.第二個模型
object ExecuteScalar() 返回查詢的第一行第一列的結果。集體的文法和ExecuteNonQuery()基本一樣
string connStr="server=.;database=機器名或ip或執行個體名;uid=撒;pwd=123(integrated security=true);";
string sql="";
object o;
using(Sqlconnection con=new Sqlconnection(connStr))
{
using(SqlCommand cmd=new SQlcommand(sql,con))
{
con.open();
object o=cmd.ExecuteScalar();
}
}
ExecuteScalar 一般與彙總函式一起使用
4.編寫三層的步驟:(用年齡自動成長的案例來說)
1.確定需求
點擊按鈕實現年齡自動增加
2.根據需求確定sql語句
update Teacher set age=age+1 where [email protected]
3. 編寫資料訪問層
3.1 首先編寫一個操作特定表的資料訪問層的類xxxDAL
因為有了sql語句,遲早都要執行,所以先編寫執行該sql語句的代碼。注意 執行sql語句的代碼要放在“資料訪問層”
在資料訪問層中將來可能要執行很多sql語句,不同的sql語句可能操作不同的表,所以我們要為不同的表建不同的類,在某個類中都是關於操作某張表的sql語句
SqlHelper放到資料訪問層,設定檔放到表現層(UI)
3.2 編寫具體的執行指定sql語句的方法:1->確定方法的參數(一般sql語句裡有幾個參數那麼該方法就有幾個參數,如果sql要返回多個值時就要建一個Model對象用來封裝某個特定表裡面的所有欄位,Model不屬於任何一層,每個層都可以調用。注意如果有參數就要寫SqlParameter[]) 2->確定方法的傳回值(執行完畢sql語句,資料庫返回了什麼,那麼該方法就原樣返回該值,不做任何判斷***)
4.編寫商務邏輯層
4.1 首先編寫一個操作特定表的商務邏輯層類xxxBLL
4.2根據表現層的需求,確定業務訪問層類的方法:1->確定方法的參數 2->確定方法的傳回值
5.表現層調用業務層實現功能
5. //當一個方法傳回值是一個集合的時候,一開始首先New一個集合對象,即便集合裡面沒有東西也要返回長度為0的集合,不要返回null
//當一個方法傳回值是一個對象的時候,一開始可以聲明這個對象,讓這個對象等於null,如果查到了資料就給這個對象執行個體化,最後返回這個對象
第二部分:ASP.NET
第一塊 WebForm(.ashx)
1.此處的Write()方法裡面的文本不會被發送到瀏覽器輸出,因為在這裡是用了Redirect(),
Redirect的內部完全產生一個新的 已規定好的響應報文發給瀏覽器
context.Response.Write("刪除成功");
context.Response.Redirect("C02.ashx");
2.上傳檔案是瀏覽器端:
如果要上傳,就必須設定表單method=post,而且enctype=multipart/form-data,
一旦設定了enctype="multipart/form-data,那麼瀏覽器產生請求報文的時候,就會產生分隔字元
並且更換請求報文的資料 組織格式(使用分隔字元來分開不同HTML表單控制項的內容
2.1上傳檔案是伺服器端:
//接受檔案
HttpPostedFile file= context.Request.Files[0];
//判斷上傳上來的圖片還是文字檔
if(file.ContentLength>0)
{
string filename= System.IO.Path.GetFileName(file.FileName);
//儲存
file.SaveAs(context.Server.MapPath("/upload/" + filename));
}
第二塊 WebForm(.aspx)
1.WebForm中 程式員一般在Page_Load中編碼(類似於一般處理常式的PR方法)
2.webForm程式直接可以右鍵瀏覽器中查看,而且會自動讀模數版
3. <%--這裡的=相當於Response.Write--%>
<%=sbtrs.ToString() %>
4.更重要是在WebForm中前台頁面可以訪問到後台頁面類裡面受保護的全域變數(***也就是說前台頁面是後台頁面的子類,因為只有子類才可以訪問到父類中受保護的成員***)
5.在第一次訪問前台頁面時會把前台頁面編譯成一個前台頁面類,該類繼承與後台頁面類,在整個程式載入時先執行PageLoad方法,然後再過五個方法後調用Render方法產生HTML代碼,
所以PageLoad方法裡面的內容在頁面的最上面
第三塊
如何選擇ashx和aspx?
如果要輸出大量的 格式化 html代碼,則最好選擇 aspx。否則,最好選ashx。
當後台業務出現問題,不想產生 前台頁面代碼時,可以使用Response.End
強制當前頁面執行結束:立即結束代碼運行,也就不再產生前台頁面的內容了,
並 立即輸出 已經Response.Write的內容
Response.End();
再次提醒:表單提交的是 表單內部 帶 name屬性的 表單元素(input select textarea)
第三部分 Cookie
1.cookie是什嗎?
儲存在用戶端瀏覽器(用戶端硬碟)中的一段資料
2.cookie的作用:
儲存使用者的狀態資訊。(會話跟蹤)cookie的主要作用就是用來儲存狀態的。因為http協議是無狀態的,所以要想儲存使用者的狀態資訊,就必須自己來實現,可以通過cookie來實現。
3.會話跟蹤技術:
cookie
session
cookie和session可以實現跨頁面儲存使用者狀態。通過跨頁面儲存使用者狀態,就可以跟蹤使用者訪問的頁面。
4.ViewState:
在同一個頁面中記錄使用者狀態。(儲存使用者狀態資訊)
5.cookie的特點:
1> 儲存的資料量大小有限制。(根據瀏覽器而定)
2〉cookie可以設定有效期間。當把有效期間設定為已經到期的日期,那麼瀏覽器就會刪除這個cookie
3〉當cookie比較多的時候,瀏覽器可以自行決定刪除某些cookie
4〉使用者可以直接通過瀏覽器清楚cookie,所以在程式員編程的時候不要太依賴cookie
5〉因為cookie是儲存在用戶端的,所以有安全性問題(不要儲存密碼)
6〉cookie是與網域名稱相關的(***很重要***)。所以在下次訪問相同網域名稱的網站時,瀏覽器會自動攜帶該網域名稱下的cookie一起訪問。
7〉cookie是與瀏覽器相關的
8〉cookie中儲存資料也是以索引值對的方式來儲存的。
9〉如果寫入了兩個相同的鍵的cookie,那麼後寫入的會覆蓋先寫入的內容。
10〉一般情況 設定cookie都必須要設定有效期間,否則當關閉瀏覽器時會立即消失
11〉可以通過伺服器端使用c#語言來寫cookie,也可以通過用戶端js來寫cookie,但是無論使用哪種方式,最終都是通過瀏覽器來操作cookie
6.Cookie的位置有兩種
Cookie是儲存在瀏覽器端緩衝裡面(無失效時間)或瀏覽器硬碟裡面(有失效時間)
第二天 ado.net, asp.net ,三層筆記