安裝運行.net需要的軟件
前言:首先對DM編程區(qū)的朋友們說聲,您好,辛苦了,因為我感到如果沒有興趣的話,每天寫呀寫呀,分析呀分析呀,確實很累的,我在今年5月份asp入了門.在這里泡了2個月,技術有所提高,然后不小心踏入了不歸路---------水區(qū),后來由于某些原因,做了幾個小系統(tǒng),只是稍微掌握的系統(tǒng)了一點,在7月-9月的這段時間,由于某些原因把c++拿出來學了學,基本掌握.不要說我賣弄,或者說感到我說的基礎的話,你可以馬上閃人,我還是那句話,要務實,我不說理論,因為我始終相信實踐中經(jīng)驗的來的就是理論,如果你每天抱著看什么什么原理的話,很難掌握的,前端時間有人說.net久久不能入門,我很是懷疑他的方法或者基礎,坦白的說,我個人感覺學.net還是要些基礎的,什么編程都不會的別學,先搞定一門再說,我這里推薦一本書:《beginning asp.net 1.1with vb.net 2003》就是《asp.net 1.1入門經(jīng)典--vb.net2003編程篇》這本書講的很不錯,適合初學者。
個人基礎:asp基本掌握,c++基本掌握;
電腦配置:6.5G硬盤+128M內(nèi)存,其他設備都是類似的配置+windows2000;
軟件要求吧:
1、MDAC 2.7(微軟數(shù)據(jù)庫引擎)大約5.01M;
2、Microsoft.NET framework1.1大約23.1M,比這大正常,版本問題吧;
3、NET_Framework_SDK_1.1_CHS大約116M.和這大小差不多;
你要問那里下載的話就在google輸入以上英文,對應的很多,自己選擇,然后按照1-2-3的順序安裝,安裝完畢了在控制面板---管理工具--生成Microsoft .NET Framework 1.1 Configuration和 Microsoft .NET Framework 1.1 Wizards,這說明你的,net服務器的環(huán)境已經(jīng)配置的差不多了,如果你感到你的計算機很不錯的話就裝上,就裝上Visual Studio 2005 Express 先奢侈一下吧,如果你想咱們快寫進行,就裝上webmatrix 就行了,它大約1.1M,asp.net在web服務器IIS下運行的,也可以在webmatrix下運行的,安裝這些完畢了(我假定你已經(jīng)裝了至少很我一樣多的東西,webmatrix你也安裝了)。
現(xiàn)在好像沒什么要我們操心的了,啟動webmatrix,會彈出:

創(chuàng)建新文件:
1、絕對本地路徑,你自己選;
2、名稱你自己寫;
3、language:visual basic.net ;
c#的過短時間我仔細看看怎么轉變,再說,這種軟件你應該很熟悉了,點擊ok了進入編寫區(qū):
編輯區(qū)下面的4個選項:Design / html / code all
design是可視化設計 / html是可視化生成的html代碼 / code是.net將要運行的代碼 ,它其有3中插入方式:
1、內(nèi)聯(lián)代碼<%%>
2、<script>標記
3、服務器控件
現(xiàn)在就在all視圖下寫入一下源碼:
<%@ Page Language="VB" %>
<script runat="server">
sub page_load()
start.text="we study asp.net on this site."
end sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:label id="start" runat="server" />
</form>
</body>
</html>
然后保存,點擊上邊的中間的圖標:
看路徑確定,它將啟動webmatrix,然后轉到 http://localhost:8080 下面,同時你的電腦右邊彈出一個很酷的提示框,大體說.net服務已經(jīng)啟動,你在瀏覽器中將看到:
we study asp.net on this site.
這說明了2件事情:
1、你的.net服務器配置好了,就等你寫代碼了;
2、你很聰明的操作了,net的安裝過程了;
當然,如果你已經(jīng)安裝了IIS的話就可以在瀏覽器中輸入網(wǎng)址就像打開asp文件那樣可以打開aspx文件的并運行之了,這是令人興奮的。
前言:當你就像我想象的那樣安裝.net完畢的話,今天也許你躍躍欲試的想馬上操作數(shù)據(jù)庫...編輯...頁面生成.....等了,你在ASP里面熟悉的操作都想用.net搞定.那我先要買個關子,你也許已經(jīng)有了VB的基礎了,也許asp熟練掌握了....如果你認為.net的變量你不看規(guī)則不太習慣的話,還是有必要靜下心來,先看看.net(vb)中是如何操作的,其實是大同小異的,另外控件大家想必知道,<input type="text">這就是html中的控件,正因為有了這些東西so程序員才能收集信息反饋顯示.....,下面我簡要的介紹一下,其實我也感覺沒有必要把每個控件的屬性都知道的,如果你感興趣的話在webmatrix的視圖里面隨便拉個左邊的就去看看源碼就知道這是什么控件了,我就隨便說說幾個非常常用的,這寫介紹你可以不看的,只看變量就行的。
控件
現(xiàn)看看控件吧,所有的web控件都必須有2個屬性,第一個當然就是ranat="server",它告訴asp.net在服務器上處理控件,并為控件執(zhí)行所有的asp.net的功能,包括狀態(tài)的創(chuàng)建.第二個屬性是名稱ID="mycontrolname"這就像人的身份證一樣,在代碼中指定名稱,引用該控件,看看這個asp.net和html窗口標記府的比較,表格來自上面書籍的P56頁,但不全。
asp.net控件 對應的html窗口標記
<asp:label> <span><div>
<asp:listbox> <select>列表
<asp:Dropdownlist> <select>單選
<asp:textbox> <input type="text">
<asp:radiobuttom><asp:radiobuttomlist> <input type="redio">
<asp:checkbox><asp:checkboxlist> <input type="checkbox">
<asp:buttom> <input type="submit">
大概就是這幾個比較常用,發(fā)現(xiàn)沒asp.net的控件都是類型前面有<asp:>,這是asp.net專用的,也就是說這是用于server服務的asp.net控件,那么,html在aspx文家中能運行么?能,好的很,因為所有asp.net的web控件都轉變?yōu)閔tml的了,如下aspx的源碼:
<%@ Page Language="VB" %>
<script runat="server">
' Insert page code here
'
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:Label id="labs" runat="server" >Label</asp:Label>
<BR/><INPUT NAME="html" />
<!-- Insert content here -->
</form>
</body>
</html>
在服務其上運行生成的文件源碼是:
<html>
<head>
</head>
<body>
<form name="_ctl0" method="post" action="p56.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE" value="dDwtMTU3ODAzNTQ4MDs7Pv3wu7xxzJOPloshG4oWx/rQLw6S" />
<span id="labs">Label</span>
<BR/><INPUT NAME="html" />
<!-- Insert content here -->
</form>
</body>
</html>
另外,asp.net的控件被asp.net添加了name的額外標記符,value值也是變?yōu)橐粋€很難認識的字符串,這個value值........我也看不懂,但這不影響任何事情。
昨天我用了一個page_load事件控制label的text屬性的,page_load是加載aspx文件.net先解釋的事件,這就和window.onload差不多吧,以后慢慢說.看看它是怎么控制的:
sub page_load()
message1.text="i am message1"
message2.text="i am message2"
end sub
這就加載了message1的text顯示為i am message1,這就是一個簡單的.net里面的web控件。
另外,再看看<asp:Dropdownlist>控件吧。啟動webmatrix,創(chuàng)建一個新文件p56.aspx,選擇design視圖,然后在左邊選擇dropdownlist控件:

把它選中用鼠標拉到界面上,就像DM里面一樣的.單擊,然后在右邊選擇:

Items,它控制的是下拉選項項目,點擊最右邊的幾個小點點..

彈出的對話框中選add,在寫上選項名稱id,value,點擊Ok。
同理添加一個submit按鈕,在properties里面設置一下背景,邊框呀什么的,然后啟動狀態(tài)欄中間的箭頭按鈕在瀏覽器中看看,效果:

是不是很酷?不急,還沒有完,選all視圖,在<script runat="server">:
<script runat="server">
sub page_load()
if page.ispostback then
message.text="you choice the web site of:"+dropdownlist1.selecteditem.value
end if
end sub
下面添加一個sub事件相應按鈕選項,如果頁面已經(jīng)提交ispostback就返回true,否則返回false。當然也要添加一個label,id命名為message,okok,現(xiàn)在看看效果:

嗯,它就是這樣相應的,看看所有的這個源碼:
以下是引用片段:
<%@ Page Language="VB" %> <script runat="server">
' Insert page code here sub page_load() if page.ispostback then message.text="you choice the web site of:"+dropdownlist1.selecteditem.value end if end sub Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) End Sub
</script> <html> <head> </head> <body> <form runat="server"> <p> <asp:DropDownList id="DropDownList1" runat="server" BackColor="Control" ForeColor="#400000" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem Value="blueidea">blueidea</asp:ListItem> <asp:ListItem Value="tillage village">tillage village</asp:ListItem> <asp:ListItem Value="warra">warra</asp:ListItem> <asp:ListItem Value="leadbbs">leadbbs</asp:ListItem> <asp:ListItem Value="vv32">vv32</asp:ListItem> <asp:ListItem Value="web site">web site</asp:ListItem> </asp:DropDownList> <asp:Button id="Button1" runat="server" BackColor="#E0E0E0" ForeColor="Maroon" Text="submit query" BorderColor="DarkCyan" BorderStyle="Double"></asp:Button> </p> <p> <asp:Label id="message" runat="server" Width="370px" Height="28px"></asp:Label> </p> </form> </body> </html> |
在vbscript里面,只有一個基本數(shù)據(jù)類型,就是variant,而且不區(qū)分大小寫,它的變量聲名有兩種方式:顯式和隱式
在vb.net里面,是有些不同的:
變量是允許在內(nèi)存中存儲信息,才可以執(zhí)行一些數(shù)學函數(shù),處理文本,執(zhí)行其他函數(shù)等操作,變量是內(nèi)存中的一個空間,一般都會被指明名稱和數(shù)據(jù)類型的。
VB.NET是一種強類型的語言,so任何變量都必須有數(shù)據(jù)類型,它有4個部分:名稱、內(nèi)存空間、數(shù)據(jù)類型、變量的值。
使用變量時,最好明確創(chuàng)建或者聲名,最簡單的就是用關鍵字dim(dimension)的縮寫,dim strmy ,這在無形中做了3件事:建立變量的名稱、指定了類型、在內(nèi)存中分配了一塊空間,在變量賦值之前,內(nèi)存中什么也不包含的。
ISnothing(srtmy)可以檢查變量是否包含值,如果變量為空,ISNothing(strmy)就返回True,如果變量不是空,就返回False。
請不要違背以下三個原則命名變量:
1、必須以字母開頭;
2、不能包含內(nèi)嵌的句號/停頓或者空格;
3、不能與VB.NET的保留字相同;
就像下面這樣命名:
dim strmy as string
strmy="5do8"
dim strmy2 as string="5do8"
等技巧和vbscript里面類似的,慢慢掌握吧。
數(shù)據(jù)類型
vb.net里面有12中不同的內(nèi)置數(shù)據(jù)類型,可以官方的分為3大類:數(shù)字類型、文本型、其他類型(有人叫混合類型,我認為不太合適)
數(shù)字類型:
1、integer(整形)(范圍在20億左右),如0,12,98都是整型的;
2、byte(字節(jié))(范圍在0-255,無負數(shù)),由于它在計算機只存儲一個字節(jié),速度很快,特cool;
3、short(短整型)(范圍在-32768到32767);
4、long(長整型)(很長);
5、single(單精度),可帶小數(shù)部分的;
6、Double(雙精度);
7、Decimal(小數(shù))(最多28位小數(shù));
選擇定義的時候要恰到好處,不要浪費內(nèi)存。
文本型:
1、string(字符串);
2、char(字符)學過c++的都知道的,將文本以數(shù)的形式存儲.范圍是0-65535,
定義的時候雙引號后面用C來表示這是個char變量,而不是string ;
其他類型
1、Date(日期型);
2、boolean(布爾型) false-(0)和true(其他數(shù)字);
有時候希望變量賦值以后,在執(zhí)行過程中值保持不變,用常量const :const Asints as integer =-255
修改常量的值是不被支持的。
vb.net還提供了一系列以c開頭的轉換函數(shù),例如cint()等,很有用,慢慢在實踐中就體會到了。
聲名數(shù)組:
和其他變量一樣,數(shù)組在使用前也要用關鍵在dim聲明的,在聲明的時候末尾還要加上另外一個參數(shù),以指定數(shù)組的大小,然后可以存儲最大索引值+1了,看看一個例子:啟動webmatrix,創(chuàng)建新文件P87.aspx,在code視圖中,寫入:
sub page_load()
if ispostback then
dim darr(4) as string
darr(0)="www.blueidea.com"
darr(1)="www.5do8.com"
darr(2)="www.dw8.cn"
darr(3)="www.google.com"
darr(4)="www.usst.edu.cn"
labtxt.text="your aaary is " & darr(txtnum.text)
labtxt.visible=true
end if
end sub
在視圖中插入label,buttom,input標簽,最后的源碼就是:
<%@ Page Language="VB" %>
<script runat="server">
sub page_load()
if ispostback then
dim darr(4) as string
darr(0)="www.blueidea.com"
darr(1)="www.5do8.com"
darr(2)="www.dw8.cn"
darr(3)="www.google.com"
darr(4)="www.usst.edu.cn"
labtxt.text="your aaary is " & darr(txtnum.text)
labtxt.visible=true
end if
end sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:TextBox id="txtnum" runat="server" BackColor="#E0E0E0" BorderColor="#C0FFC0"></asp:TextBox>
<asp:Button id="Button1" runat="server" BackColor="#E0E0E0" BorderColor="Green" Text="submit to array" BorderStyle="Groove"></asp:Button>
</p>
<p>
<asp:Label id="Labtxt" runat="server" BackColor="#004040" BorderColor="Silver" Visible="False" Width="240px" Height="28px" ForeColor="White"></asp:Label>
</p>
<!-- Insert content here -->
</form>
</body>
</html>
效果:

然后運行,輸入數(shù)據(jù),顯示數(shù)組的值,注意這里不要輸入0-4以為的數(shù)字,負責就是越界,這在后面我們要控制的,這里只是演示數(shù)組而已。
多維數(shù)組
和vbscript里面的及其相似,其他定義和數(shù)組一樣,就多了維數(shù).
數(shù)據(jù)集合
通常需要用不同的方法將項分組,這些高級技術在VB.NET中稱為集合,包括了arraylist、hashtable、sortedlist,集合的特性如下:
1、集合可以包含不定數(shù)目的成員;
2、集合中的元素僅僅因為他們處于相同的集合才發(fā)生關系;
3、集合的元素不必共享相同的數(shù)據(jù)類型;
4、當整個集合發(fā)生變動時,對象在集合的位置也可以改變;
.net已經(jīng)上路了,前幾天著重寫了寫asp.net(VB)的基本安裝、語法、變量、原計劃把服務器控制結構和過程編程也寫上,但,這和asp里面的沒什么區(qū)別,在循環(huán)結構里面多了一個with...end with操作一個對象的屬性的,其他的都差不多,想看詳細教程的請查閱Msdn,我就跳過這一節(jié)了,另外跳轉結構---子例程和函數(shù)也跳過,不過,里面的模塊化很有意思的,還有傳遞參數(shù)的時候按照引用還是值傳遞這個很是重要,至于其中的區(qū)別,學過c++的都知道,不太明白的請查閱相關資料......由于篇幅關系,我把事件驅動編程和回送也跳過,相應用戶的事件組,這個很有必要在這里說說。
官方定義事件:事件是由來自代碼外部的某種力量在應用程序中引發(fā)的一個操作.將事件驅動環(huán)境按照順序分為以下4個部分:
1、發(fā)生一個事件,like用戶單擊按鈕;
2、系統(tǒng)檢測到事件,asp.net注冊已發(fā)生的事件;
3、系統(tǒng)對事件做反應,執(zhí)行一些代碼;
4、系統(tǒng)返回其初始狀態(tài),等待下一事件;
html葉子是按照代碼的順序依次執(zhí)行的,而事件驅動編程強調的是相應用戶,執(zhí)行事件,等待相應的思想。
ASP.NET支持3個主要的事件組,第一組是html內(nèi)部的事件,這些事件在瀏覽器上執(zhí)行。第二組包含在asp.net生成頁面時自動發(fā)生,我們使用這些事件建立頁面.第三種包含了用戶與頁面交互時發(fā)生的所有事件(這種最強大)。
事件驅動編程和回送回送是處理過程,該過程包括:瀏覽器將信息發(fā)送到瀏覽器,告訴服務器處理事件,服務器執(zhí)行次事件處理程序中的代碼,并將得到的html再傳送到瀏覽器,回送只作用于有屬性runat="server"的web窗口,且只有asp.net控件才能將信息傳送到服務器。
下面看個事件驅動的實例結束本節(jié).呵呵.
實例:我們要做這件事,設計一個"東西",要實現(xiàn)的是能加減乘除操作,并且顯示出計算結果。
現(xiàn)看看算法吧:
sub page_load(sender as object,e as eventargs)
btnadd.backcolor=system.drawing.color.lightgray
btnsubtract.backcolor=system.drawing.color.lightgray
btnfactor.backcolor=system.drawing.color.lightgray
btnra.backcolor=system.drawing.color.lightgray
end sub
sub ca(sender as object,e as eventargs)
select case sender.id
case "btnadd"
labtxt.text=cdbl(input1.text)+cdbl(input2.text)
case "btnsubtract"
labtxt.text=cdbl(input1.text)-cdbl(input2.text)
case "btnfactor"
labtxt.text=cdbl(input1.text)*cdbl(input2.text)
case "btnra"
labtxt.text=cdbl(input1.text)/cdbl(input2.text)
end select
sender.backcolor=system.drawing.color.yellow
end sub
分析上面代碼:page_load事件當整個頁面第一次可見時發(fā)生,這里實現(xiàn)了令4個按鈕的背景顏色為淡灰色。子例程ca執(zhí)行的是用戶點擊按鈕操作后發(fā)生的事件,然后回送labtxt上,最后改變選擇web控件對象(按鈕)的背景顏色,注意到:
sub ca(sender as object,e as event)
'some code .............
end sub
它是事件處理程序提供的參數(shù)向處理程序傳遞參數(shù)事件信息,其中第一個參數(shù)sender提供了引發(fā)事件對象的引用,第二個參數(shù)E是一個事件類,用于捕捉所處理時間狀態(tài)的信息,并傳遞與該事件對應的對象。
下面在視圖中拉上這7個控件,注意這里需要正確填寫每個控件的ID,并且要在每個按鈕上添加事件:
onclick="ca"
意思就是說當點擊這個按鈕是發(fā)生事件ca,這是不可缺少的。
一切搞定了的話,最后的aspx頁面效果就像這樣:

所有源碼:
運行代碼框
以下是引用片段:
<%@ Page Language="VB" %> <script runat="server">
sub page_load(sender as object,e as eventargs) btnadd.backcolor=system.drawing.color.lightgray btnsubtract.backcolor=system.drawing.color.lightgray btnfactor.backcolor=system.drawing.color.lightgray btnra.backcolor=system.drawing.color.lightgray end sub sub ca(sender as object,e as eventargs) select case sender.id case "btnadd" labtxt.text=cdbl(input1.text)+cdbl(input2.text) case "btnsubtract" labtxt.text=cdbl(input1.text)-cdbl(input2.text) case "btnfactor" labtxt.text=cdbl(input1.text)*cdbl(input2.text) case "btnra" labtxt.text=cdbl(input1.text)/cdbl(input2.text) end select sender.backcolor=system.drawing.color.yellow end sub
</script> <html> <head> </head> <body> <form runat="server"> <p> <asp:TextBox id="input1" runat="server"></asp:TextBox> <asp:Button id="btnadd" runat="server" Text=" + " onclick="ca"></asp:Button> <asp:Button id="btnsubtract" runat="server" Text=" - " onclick="ca"></asp:Button> </p> <p> <asp:TextBox id="input2" runat="server"></asp:TextBox> <asp:Button id="btnfactor" runat="server" Text=" * " onclick="ca"></asp:Button> <asp:Button id="btnra" runat="server" Text=" ÷ " onclick="ca"></asp:Button> </p> <p> <asp:Label id="labtxt" runat="server" Width="201px" Height="26px"></asp:Label> </p> <!-- Insert content here --> </form> </body> </html>
|
對象就是能看到,感到,聽到,觸摸到,嘗到或聞到的東西,在這里我們這樣“定義”:對象是一個自包含的實體,用一組可識別的特性和行為來標識。
在面向對象的編程(oop)的編程方式,用使用下面的兩個術語。
類:這是對象的模板,定義了對象的特性。
實例:這是一個真實的對象,可以與之交互的東西。
屬性,方法和事件
在OOP中,下面的術語描述對象的特性。
屬性:這是一個名次,描述了某個對象的屬性
方法:這是一個動詞,描述了對象可以完成的工作,或者希望它完成的工作。
事件:描述了對象為相應某個動作而執(zhí)行的操作。
.net中的對象
在.net中,其實所有的東西都是對象。為什么要使用對象?
在編程時,對象的面向對象編程和面向對象設計的一部分,它們具有非常大的優(yōu)勢,許多人認為這是一個復雜的主題,但實際上,它非常簡單,可以用四個簡單的術語來解釋:抽象、封裝、多態(tài)和繼承。
抽象:這是一個隱藏復雜性,類的內(nèi)部工作情況,所以用戶不必知道它的運作方式,就像。如果想要看電視,就不必知道電視機時如何工作的,只需打開電視機,搜索頻道即可,on/off開關抽象了實際的操作,在string例子里,有一個trim方法,它可以刪除字符串尾部的空格,同樣不需要知道他是如何完成這個任務的,只要知道它有這個功能即可。
封裝:每個對象都包含進行操作所需要的所有信息,這個對象稱為封裝,因此對象不比依賴其他對象來完成自己的操作,在術語TOupper()方法中,string不必到其他地方獲取信息來把所有的字符轉換為大寫。
多態(tài):這個術語用于表示不同的對象可以執(zhí)行相同的動作,但要通過他們自己的實現(xiàn)代碼來執(zhí)行,名稱一樣,但底層實現(xiàn)的代碼是不一樣的。
繼承:它定義了類如何相互關聯(lián),共享特性的,繼承的工作方式是,定義類和子類,其中子類繼承了父類的所有特性,繼承的重要性是,它迫使類型相似的類具有一致性,并允許共享代碼,如果決定創(chuàng)建一個新類,就不必定義父類的所有特性。
好了,我們看個實例吧,創(chuàng)建一個user類,他具有一下特性:
屬性:name ,point,level
方法:post(),reply(),change()
ok,現(xiàn)在在你的webmatrix里面創(chuàng)建吧。
看看以下源碼:
public class user
public sub new()
end sub
private _name as string
private _point as integer
private _level as string
public property name as string
get
return _name
end get
set(byval value as string)
_name=value
end set
end property
public property point as integer
get
return _point
end get
set(byval value as integer)
if value<0 then
value=0
end if
_point=value
end set
end property
public property level as string
get
return _level
end get
set(byval value as string)
_level=value
end set
end property
end class
這里定義的就是上面我們想要的,注意,如果你以前不了解一門面向對象設計的語言的話理解起來比較困難的。創(chuàng)建實例的是:
sub page_load(sender as object,e as eventargs)
dim blueidea as new user()
blueidea.name="5do8"
blueidea.point="5000"
blueidea.level="終極會員"
name.text=blueidea.name
point.text=blueidea.point
level.text=blueidea.level
end sub
html視圖還是注意ID寫上3各label控件就ok了,可以看到效果:
name: 5do8 point:5000 level:終極會員
代碼分析如下:
1、首先用class關鍵字定義類,后面是類名,而public是表示可以用于其他的程序;
2、然后是構造函數(shù),new(),如果不寫的話也行,因為,net默認提供構造函數(shù)的,這和c++里面的一個模式;
3、定義私有變量,用來存儲類的屬性,這些變量在代碼的外部不能訪問,如何使用這些變量,就要使用property語句即可;
public property name as string
get
return _name
end get
set (byval value as string)
_name=value
end set
end property
第一行里面的public聲名在外部可以訪問,property聲明一個屬性,它后面是屬性的名及其類型。get返回私有變量的值,這是內(nèi)部機制,接下來的set語句,在屬性中存儲一個值時執(zhí)行這個語句,這里僅僅把私有屬性設置為參數(shù)傳送的值,set 語句有些像方法調用,只傳一個參數(shù),該參數(shù)在設置屬性時由.net自動賦值。
..........其他的依次同理....最后是結束類end class。
創(chuàng)建實例的時候:
dim blueidea as new user()
blueidea.name="5do8"
blueidea.point="5000"
blueidea.level="終極會員"
第一行創(chuàng)建user類的一個實例,名稱是blueidea。接下來是設置它的屬性值。最后綁定在web控件上。
這就是一個很簡單的使用類的實例,但不像c++那樣,asp.net好像沒有提供析構函數(shù)釋放一些不必要的內(nèi)存占用等。
另外,高級類屬性和方法就不說了,很多,慢慢的在實踐中應該可以掌握的。
.net框架包含幾個命名空間,其中有幾十個用于數(shù)據(jù)庫訪問的類,主要有system.data.sqlclient和system.data.oledb兩大類,這里我主要介紹小巧一點的system.data.oledb空間中的類,因為system.data.sqlclient只與microsoft sql server數(shù)據(jù)庫一起工作,而前者是支持access或者oracle 數(shù)據(jù)庫。
system.data.oledb名稱空間包含以下這些類:
1、oledbconnection(代表一個打開的數(shù)據(jù)庫連接)
2、oledbcommand(代表一個sql語句或存儲過程)
3、oledbdatareader(代表從數(shù)據(jù)庫查詢返回的結果)
執(zhí)行常見的數(shù)據(jù)庫任務
在接下來的一些日子里面,我會陸續(xù)的寫上如何創(chuàng)建和打開數(shù)據(jù)庫,獲取和顯示數(shù)據(jù)庫記錄,添加新的數(shù)據(jù)庫記錄,更新數(shù)據(jù)庫記錄,刪除數(shù)據(jù)庫記錄等。這些都是很基本的操作,但能令初學者心血彭湃的。呵呵。
當您使用microsoft access或者oracle,需要使用以下的頁面指令來導入system.data.oledb命名空間:
<%@ import namespace = "system.data.oledb"%>
使用sql server數(shù)據(jù)庫的鏈接的話是:
<%@ import namespace = "system.data.sqlclient"%>
打開數(shù)據(jù)庫
要訪問數(shù)據(jù)庫,首先要創(chuàng)建和打開數(shù)據(jù)庫鏈接,創(chuàng)建連接的方式看你的數(shù)據(jù)庫類型,如下代碼創(chuàng)建了一個sql數(shù)據(jù)庫的連接:
<%@ import namespace = "system.data.sqlclient"%>
<script runat="server">
sub page_load
dim sqlconn as sqlconnection
sqlconn=new sqlconnection("server=localhost;uid=sa;pwd=sd;database=db")
sqlconn.open()
end sub
</script>
第一行導入命名空間,在page_load子例程中創(chuàng)建和打開,先創(chuàng)建一個名為sqlconn的實例,通過向sqlconnection類的構造器傳遞一個字符串參數(shù),對sqlconn類進行初始化,最后通過sqlconnection類的open()方法實際打開鏈接。
同樣的道理,我們可以類似的打開access的數(shù)據(jù)庫,如下的代碼:
<%@ import namespace ="system.data.oledb" %>
<srcipt runat="server">
sub page_load()
dim conn as oledbconnection
conn=new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
conn.open()
end sub
</srcipt>
在使用完數(shù)據(jù)庫鏈接時,應盡快關閉它是很重要的,每個數(shù)據(jù)庫都有連接數(shù)量的限制,關閉鏈接使它可以供其他的頁面使用,應使用下面的語句關閉sqlconnection或者oledbconnection:
yourconnname.close
在ASP.net頁面中最常用的是SQL中的select語句:
select szd_first,szd_last
from site_data
where id='2'
在asp.net頁面執(zhí)行一個select語句需要以下4步完成:
1、創(chuàng)建和打開數(shù)據(jù)庫
2、創(chuàng)建沂河代表sql select語句的數(shù)據(jù)庫命令
3、用executereader()方法執(zhí)行這個命令,并且返回一個datareader.
4、遍歷datareader,顯示查詢的結果。
在使用ado.net查詢中,查詢的結果在一個datareader中返回,更準確的說,查詢的結果由一個sqldatareader或oledbdatareader表示,datareader代表一個只向前的數(shù)據(jù)庫記錄流,這意味著datareader每次只代表一個記錄,要想獲取流中的下一個記錄,必須調用read()方法,要想顯示所有的記錄,必須反復調用read()的方法,直到流的尾部,不能回頭。例如asp里面的游標只向前移動。
下面的程序顯示了sql server讀取數(shù)據(jù)庫的記錄:
<%@ import namespace="system.data.sqlclient"%>
<%
dim sqlconn as sqlconnection
dim sqlcmd as sqlcommand
dim sqlreader as sqldatareader
sqlconn=new sqlconnection("server=localhost;uid=sa;pwd=sd;database=data")
sqlconn.open()
sqlcmd=new sqlcommand("select szd_first from site_data",sqlconn)
sqlreader=sqlcmd.executereader()
while sqlconn.read()
response.write("<li>")
response.write(sqlreader("szd_first"))
end while
sqlreader.close
sqlconn.close
%>
分析:先導入sql server的ado.net類需要的名稱空間,然后創(chuàng)建一個數(shù)據(jù)庫conn,這和asp相似,接著用一個sql select語句的sql字符串初始化sqlcmd對象,這個語句從名為site_data的表中讀取所有的記錄。然后調用sqlcommand類的executereader()方法執(zhí)行這個命令,返回執(zhí)行結果的sqlreader,然后遍歷所有記錄。
下面演示一個從access數(shù)據(jù)庫里面讀出數(shù)據(jù)的源碼:
<%@ Page Language="VB" %>
<%@ import namespace="system.data.oledb"%>
<script runat="server">
sub page_load()
dim conn as oledbconnection
dim accmd as oledbcommand
dim acreader as oledbdatareader
conn= new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
conn.open()
accmd=new oledbcommand("select szd_lastname from site_n",conn)
acreader=accmd.executereader()
while acreader.read()
response.write("<LI>" & acreader("szd_lastname"))
end while
acreader.close
conn.close
end sub
</script>
有時候,我們要查詢符合條件的一條記錄,如果按照上面的executereader,效率顯然很差,這里介紹另外一種方法executescalar,在幾張集聚功能的count,max,min等,這個例子:
sub page_load()
dim conn as oledbconnection
dim accmd as oledbcommand
conn= new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=d:\web\web\net\data\db.mdb")
conn.open()
accmd=new oledbcommand("select count(*) from site_n ",conn)
actxt.text=accmd.executescalar()
conn.close
end sub