.NET Framework概觀簡單地講.NET Framework就是建置、部署及執行.NET應用程式及XML Web服務的環境。只要安裝VS 2008開發工具之後,所有相關的.NET開發環境自然具備,此時才能做.NET應用程式的開發與執行,下圖是.NET Framework基本的組成元件架構。

.NET Framework與ASP.NET有何不同?
- .NET Framework主要包含兩大部分,第一部分是CLR(Common Language Runtime),它是.NET程式執行環境及引擎;第二部分是Class Library類別庫。
- ASP.NET是眾多.NET應用程式類型的一種,它的用途是專注於網頁程式設計。ASP.NET會使用.NET Framework所提供的類別庫,因為.NET Framework類別庫是所有類型應用程式所共用的基礎設施。
所以.NET Framework是所有程式的基礎設施,而ASP.NET則是一種網頁開發的技術,只不過ASP.NET會使用.NET Framework所提供的類別庫,呼叫使用一堆現成的程式功能。
VS 2008偵錯工具
- 設定程式偵錯之中斷點
- 加入監看式視窗
- 以DataTip檢視
物件導向程式
類別(class)與物件(Object)二者實為一體兩面的東西,類別是程式的設計藍圖,而物件則是將此藍圖具體化,轉變成真正能夠執行的程式單位實體,這個實體就叫做物件。
此外,類別是物件導向程式中的最小單位。
方法(Method)就是由一些C#程式碼所組成的區塊(Block),並賦予這個程式區塊一個名稱,這樣日後用名稱便可呼叫這個程式區塊,且可重複呼叫使用此方法。而事實上方法並不是什麼新鮮的概念,在許多程式語言中早就存在了相似的概念,如函式(function)、副程式(subroutine)、程序(procedure)、子程式(subprogram)等等,它們扮演的角色及功能其實是差不多的,只不過稱呼的方式有所差異罷了。
參數傳遞的三種類型
- 傳值參數(By Value)
傳值參數是將參數值傳入方法之中,而沒有傳出的動作。傳值參數有時也稱為輸入(in)參數,這是C#語言預設的參數傳遞機制。傳值參數的宣告語法如下:
修飾詞 方法名稱(參數型別 參數名詞1,參數型別 參數名詞2…)
{
…
}
使用傳值參數的語法:
方法(參數);
- 傳址參數(By Reference)
傳址參數是將參數的記憶體位址傳入方法之中,讓方法來做運算處理,傳址參數的宣告語法如下:
方法(ref 參數型別 參數名稱1,ref 參數型別 參數名稱2…)
{
…
}
使用傳址參數的語法如下:
方法(ref 參數);
- 傳出參數(By Output)
傳出參數指的是從方法傳出參數,並讓外部的變數來做接收這參數。宣告傳出參數的語法如下:
方法(out參數型別 參數名稱1,out參數型別 參數名稱2…)
{
…
}
使用傳出參數的語法如下:
方法(out 參數);
微軟T-SQL三大類的陳述式(Statement)功能
- 資料定義語言(Data Definition Language,DDL)
可用來建立或刪除資料庫中的物件,主要是指Create、Drop與Alter三大類的指令。 - 資料控制語言(Data Control Language,DCL)
可用來改變user或role對資料庫的存取權限(Permission),主要的指令有Grant、Deny與Revoke三類。 - 資料操作語言(Data Manipulation Language,DML)
可用來進行資料的查詢與修改,其實就是指Select、Insert、Update與Delete四大類的指令。
多個資料表的SQL查詢語法
- Inner Join(內部聯結)
- Outer Join(外部聯結)。還可進一步細分為Left Outer Join、Right Outer Join、Full Outer Join三種。
- Cross Join(交叉聯結)。
- Self Join(自我聯結)。
Pages頁面之間的切換移轉技巧
- Client端的頁面切換類型
完全是在Client端進行,不必提交回伺服器處理,直接在前端就能進行網頁的切換移轉,常見的程式指令有:Location.href、Window.navigate()、Window.open()與四種。 - Server端的頁面切換類型
是依賴後端伺服器的指令來處理,通常由ASP.NET控制項所引發,進而將Request提交回伺服端,再由伺服端產生網頁切換移轉的指令,常見的程式指令有:Response.Redirect()、Server.Transfer()與跨網頁公佈(Cross-Page Posting)三種。
Web的狀態管理
因為以HTTP技術為基礎的Web Form網頁本身是無狀態(Stateless)的,意思是Web伺服器不會刻意去保留任何的連線或使用者資訊,所以必須隨時視需要,採用不同的狀態管理技術保存網頁資料,以便下次可以將資料再行取出運用,以下介紹四種較為常用的狀態管理技術:
- Application應用程式狀態管理(Server端),其最大特色是儲存的狀態資料屬於全域的(Global)。因此可以在專案中加入一個Global.asax全域應用程式類別(Global Application Class),在Global之中可以設定整個Web專案層級的事件程式,故可在其中設定Application狀態值,供整個專案程式讀取使用Application狀態資料。
- Session工作階段狀態管理(Server端),也是屬於可全域存取的,但與Application應用程式狀態最大不同處,在於Application是所有人共享同一份狀態資料,但Session則是每個使用者獨立使用一份Session狀態設定,不同使用者之Session狀態彼此不會互相干擾,並且還會進一步依附在單一的瀏覽器視窗畫面。因此Session狀態是以「單一使用者+單一瀏覽器視窗」為管理單位。
- View State檢視狀態管理(Client端),以隱藏欄位(Hidden Field)形式,伴隨著網頁HTML碼一併傳送到使用者瀏覽器之中,故使用的是Client端的電腦資源。
- 常用於Page或控制項保存狀態值資料,當然它也可以保存一般值,且是每個使用者皆有獨立的View State檢視狀態,不同使用者間彼此不共用View State檢視狀態資料。但必須注意只能在同一個Page頁面中儲存與讀取狀態資料,一旦有任何的網頁導向切換,或者是按下瀏覽器的上一頁/下一頁按鈕時,View State檢視狀態資料便會消失,在新的Page頁面亦不認得原本的View State檢視狀態設定值。
- Cookie狀態管理(Client端),是用來儲存使用者瀏覽網站的一些資訊,其格式為純文字檔。而Cookie的作用在於可儲存使用者喜好等資訊,待下次使用者再次造訪時,就可以直接讀取其電腦中的Cookie檔設定值。不過,絕對不要在Cookie中儲存重要的敏感資料,例如使用者帳號、密碼、信用卡號碼等。
交易(Transaction)
若能於ADO.NET程式中加入資料庫交易的機制,補強數行交易程式碼,則可確保資料交易安全性可達100%保障,即便中間發生任何錯誤,都可以回復至交易前的資料狀態。
所謂的交易是指將一連串的工作視為個邏輯單元(Login Unit),而交易本身必定具備ACID的特性,所謂的ACID是指:
- 不可部份完成性(Atomicity)
交易必須將交易程式中所有的工作項目全部完成才算是一個完整交易。 - 一致性(Consistency)
交易完成時,全部的資料必須維持一致性的狀態。在關聯式資料庫(Relation Database)中,必須將所有的規則(Rule)套用於交易的修改,以維護所有的資料整合性(Integrity)。所有的內部資料結構,例如B型樹狀結構索引(B-tree Index)或是雙向連結串列(Doubly-Linked List),在交易終止時必須是正確的。 - 隔離性(Isolation)
並行的交易所作的修改,必須與其他任何並行的交易所做的修改隔離。交易所辨識的資料不是處於另一筆並行的交易修改資料之前的狀態,就是處於第二筆交易完成後的狀態,但是卻無法辨識中繼狀態,這稱為序列化能力(Serializability),因為這樣可以產生重新載入起始資料並重新執行一系列的交易,以便讓資料最終能夠與原始交易執行後的狀態相同的能力。 - 耐久性(Durability)
交易完成之後,其作用便永遠存在於系統之中。即使系統發生失敗的事件,但修改仍會保存。
<節錄 ASP.NET 3.5完美入門(使用C#) >
閱讀全文...
Q:
如何用GMAIL來發信?
A:
假設GMAIL的帳號是account,密碼是password

Q:
如何用超連接傳送變數?
A:
如在任一頁中建超連接:< a href=Edit.aspx?fbid=23>點擊< /a>
在Edit.aspx頁中取值:String str=Request.QueryString["fbid"];
Q:
承上題,當從電子信箱點擊帳號開通信件的網址時,出現「剖析器錯誤訊息 無法辨認的屬性 'type'。」錯誤訊息。
A:
將IIS中ASP.NET版本的組態設定從1.1改成2.0即可。
Q:
如何在SQL語法處理變數?
A:
(a).SQL修改『某紀錄』語法
Update 1a set name = ‘jack’, chi = 90 where id_no=’90001’
(b).當有變數時的SQL修改語法(C#)
”Update 1a set name = '" + textBoxName.Text + "', chi = " + Int32.Parse(textBoxChi.Text) + " where id_no=' " + textBoxNo.Text + "'";
注意:什麼時候要用單引號『’』,什麼時候不用加呢?
字串:字串前後要加上 ‘ 單引號
Values('" & txt_5_PrjCode.Text & "')”
數值:數值前後要不用加,但是所引用的textbox.text要先用Int32.Parse轉換成數值格式
Values(" & Int32.Parse (txt_5_Period.Text) & "')”
日期:字串前後要加上 ‘ 單引號,所引用的textbox.text要先用DateTime.Parse轉換成日期格式
Values('" & DateTime.Parse(txt_5_BeginDay.Text) & "')”
Q:
網頁之間如何傳接值?
A:
1. 使用QueryString變量
QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對於傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}
2. 使用Application 對象變量
Application對象的作用範圍是整個全局,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;
Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}
3. 使用Session變量
想必這個肯定是大家使用中最常見的用法了,其操作與Application類似,作用於用戶個人,所以,過量的存儲會導致服務器內存資源的耗盡。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session["name"].ToString();
}
4. 使用Cookie對象變量
這個也是大家常使用的方法,與Session一樣,但Cookie是存放在客戶端,而session是存放在服務器端。而且Cookie的使用要配合ASP.NET內置對象Request來使用。
a.aspx的C#代碼
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Response.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookies["name"].Value.ToString();
}
5. 使用Server.Transfer方法
這個才可以說是面象對象開發所使用的方法,其使用Server.Transfer方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。
a.aspx的C#代碼
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}
b.aspx中C#代碼
private void Page_Load(object sender, EventArgs e)
{
a newWeb; //實例a窗體
newWeb = (source)Context.Handler;
string name;
name = newWeb.Name;
}
Q:
在.NET 3.0下Web Form如何與Dynamic實體網站結合?
A:
必須先建立Dynamic實體網站,然後再將做好的Web Form程式從「我的電腦」拖拉到Visual Studio的「方案總管」,唯專案名稱要ㄧ樣,同時Web.config的SQL連接字串設定要注意,不要覆蓋到Dynamic實體網站的Web.config,例如:

另外注意當SQL的資料表、某資料表的欄位,或者其他有新增、刪除等異動時,只要從"實體資料模型"中按右鍵執行"從資料庫更新模型"即可!
閱讀全文...
當開發ASP.NET專案要配合資料庫,除非是自行架設網站,否則在選擇虛擬主機時,一般都是預設Access。如果要使用MSSQL的話,以智邦為例,就必須選擇MSSQL虛擬主機服務,不過如此一來,就將從年費4,000元飆到12,000元。
因此就考慮改使用MySQL資料庫,後來查了一下有幾家支援MySQL,有的還支援Ajax等功能。如果考量價錢的話,可以選擇國外的主機代管商。
一般Visual Studio是微軟公司為.NET程式設計師所提供的IDE軟體,其還隨附SQL Server Express資料庫伺服器。因此要使用MySQL資料庫的話,可以到MySQL官方網站(
http://dev.mysql.com/downloads/)下載MySQL Community Server和MySQL Connector/Net,其步驟如下:
1.安裝MySQL Community Server
目前最新版本是mysql-5-1.47-win32.msi,而安裝時因考慮到以後中文資料輸入的問題,所以一開始先設定「Custom」安裝,然後在「Please select the default character set.」步驟的「Manual Selected Default Character Set/Collation」中從預設的「Latin1」改為「utf8」。

如果之前安裝沒有設定到的話,可以到My.ini設定如下:
[mysql]
default-character-set=utf8
…
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8
2.安裝Connector/Net
下載Connector/Net組件,將mysql-connector-net-6.2.3.zip解壓縮後,執行mysql.data.msi程式即可。
3.Visual Studio連接MySQL
開啟「檢視/伺服器總管」,在「資料連接」上按一下滑鼠右鍵執行「加入資料連接…」,然後執行「變更資料來源」為「MySQL Database」。
Server name:localhost
User name:root
Password:XXX
Database name:test
4. C#程式碼
using MySql.Data.MySqlClient;
SqlClient相關語法前面加上My
MySqlDataAdapter
//SqlCommand
MySqlCommand
//連線字串設定如下
string conString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
MySqlConnection conn = new MySqlConnection(conString);
在Web.config檔要有以下內容:

範例:登入檢查帳號是否存在與權限判斷

如果要運用到MySQL的預存程序,例如查詢某個帳號是否已經存在資料庫的話,首先在MySQL執行下列語法:
DROP PROCEDURE IF EXISTS CheckUserName;
CREATE PROCEDURE CheckUserName( User_Name VARCHAR(50) )
BEGIN
SELECT COUNT(*) FROM member WHERE Username = User_Name;
END;
C#程式碼

使用jquery用戶端檢查帳號是否已經有人註冊

參考:[MySQL] 如何接收 Store Procedure 的傳回值
閱讀全文...
2010年5月6日台灣微軟上市發表了Visual Studio 2010,主軸放在「三螢一雲」(3 screens and 1 cloud)的開發應用,也就是協助你以熟悉的工具及技術,快速開發–電腦、手機與智慧型裝置上的軟體及雲端服務。
Microsoft Visual Studio 2010英文版已於4月13日正式推出,而中文版預計於6月1日該週開放下載。
ASP.NET的發展
ASP.NET 1.0透過Code-behind技術一舉推翻了過去ASP開發時代HTML與程式碼夾雜的狀況,同時把物件導向程式設計的精神與事件驅動(Event-Driven)帶入了Web應用程式開發的世界;ASP.NET 2.0則透過新的資料庫存取技術,讓Web資料庫應用程式的開發大幅簡化,並且透過新增的控制項有效地提高開發人員的產能。
緊接著ASP.NET 3.5則伴隨著.NET 3.5的推出,將微軟重要的查找技術LINQ以及LinqToSql加入了ASP.NET當中,並且把ASP.NET AJAX正式納入成為產品中重要的一環;而ASP.NET 3.5 SP1則宣示了透過Dynamic Data技術,建構高延展性的Web資料庫作業程式,並同時帶著ASP.NET MVC Framework 1.0打下高階商用Web應用程式的基礎。
而ASP.NET 4.0帶來了什麼樣的技術呢?
更完整的Web Forms技術
從ASP.NET誕生到現在接近10年的焠鍊,讓ASP.NET Web Forms各方面均已經相當成熟而穩定,如今在這方面,當取得Visual Studio 2010後,將發現有更豐富的專案範本,增加了Page.MetaKeywords以及Page.MetaDescription這2個搜尋引擎最佳化的屬性,讓開發人員可以輕鬆的在網頁中加入可供搜尋引擎檢索的訊息,另外針對Cache技術,除了可將Cache資料儲存在記憶體中,也可以針對不同情境下的需求,將Cache資料存放在不同的位置(例如硬碟、或資料庫)。
更聰明的方法製作動態網頁jQuery及Ajax
Visual Studio 2010對jQuery已全面支援,jQuery是一套跨平台的JavaScript函式庫,再加上ASP.NET Ajax Library與Ajax Control Toolkit的整併,並直接在CodePlex提供下載,可以想見未來在Client-Side技術上,開發人員將擁有更豐盛的資源,可更快速的開發出便捷好用的Web應用程式,同時也可兼顧用戶端UI呈現的即時性與精緻度。
MVC 2為大型開發案奠定基礎
對於一個ASP.NET開發人員,要同時熟悉HTML、CSS、JavaScript、SQL、VB或C#等,才能夠完成一個可上線的程式。因此越是在大型的Web應用程式開發案,或者在User Interface與Business Rule常常改變的網站,就越需要MVC這樣的架構,然後網頁的操作介面和程式可以分開由不同並學有專長的人負責開發。
然而這樣的開發方式對於過去ASP.NET應用程式的開發相當直覺,習慣於Web Forms的開發人員,一時之間要進入MVC世界,所需面對的挑戰和開發方式的改變,確實是令人感到有些困擾,因此新版ASP.NET MVC 2提供了讓開發更便利的擴充,例如Model Validation就是在ASP.NET MVC 2新加入的功能。
把Dynamic Data整合到Web Forms
Dynamic Data技術從.NET 3.5時代出現之後,其中DataAnnotations機制及相關的概念,也擴展應用到了MVC及Silverlight應用程式開發中,讓前端使用者介面與後端資料庫徹底隔離。最新的ASP.NET 4.0,Dynamic Data技術甚至可直接整合到傳統Web Forms中,對於需要設計大型資料庫應用系統的開發人員來說,將會有相當大的助益。
閱讀全文...
在ASP.NET中,網頁是由「視覺」與「程式邏輯」兩個部分所組成的,視覺就是指圖片、靜態文字、HTML標籤...等掌控網頁外觀的部分,而程式邏輯就是Visual Basic或是其他程式語言的程式碼,用來控制網頁的邏輯運作。
這兩個部分可以依照您的需求,合在一起放在同一個檔案內,稱為「單一檔案模式」,也可以分開放置在不同檔案,稱為「程式碼後置模式」(Code-Behind);

雖然程式碼後置模式將程式分開成為兩個檔案,但是ASP.NET載入該程式時,仍然會自動將兩個檔案合併執行。
兩種模式的比較
一般來說,單一檔案模式的優點如下:
1.如果程式碼不多,放置於單一檔案內,對於學習、撰寫與維護較為方便。
2.因為只有一個檔案,所以容易部署至伺服器,傳送給其他人的時候也較為方便。
3.只有單一檔案,所以需要更改名稱時直接更改即可。若是程式碼後置模式,更改aspx.cs檔案的名稱之後,還必須開啟aspx檔案修改CodeFile屬性,所以比較麻煩。
而下面則是程式碼後置模式的優點:
1.將視覺與程式邏輯分開之後,美工與程式設計人員便能獨立作業,可以各自修改檔案,不會互相影響。
2.因為程式羅輯分開為另一個檔案,所以可以方便地讓多個網頁共用同一個程式邏輯檔案。
兩種模式各有其優缺點,您可以依照環境與需求,選擇合適的模式來設計。
閱讀全文...
Visual Studio 2008是微軟公司為.NET程式設計者所提供的IDE軟體,其支援多種程式語言,而且具備統一的開發介面,不論開發桌面應用程式、ASP.NET網頁程式。XML Web Service或是行動裝置應用程式,都可以在相同的環境與介面下完成。
依照功能的不同,Visual Studio 2008分成許多版本,其中Visual Web Developer(簡稱VWD)便是特別為了開發ASP.NET網站所推出。
在VWD內可以使用C#與Visual Basic設計ASP.NET網頁,而且還隨附SQL Server Express資料庫伺服器,可以開發較為複雜、以資料庫為資料後端的網站。
網站種類
在VWD中開發ASP.NET網頁,必須先建立網站專案,一個專案便代表一個網站。VWD支援的網站類型可分為以下幾種:
HTTP、FTP:這2種網站都是指實際運作中的Web伺服器(通常都是IIS伺服器),在開發網頁的過程中,VWD會透過HTTP或FTP通訊協定存取伺服器上的網頁檔案,載入到VWD的工作環境中供我們進行開發,修改的結果也都會直接存回伺服器上。
檔案系統:顧名思義,這是將我們開發的網頁直接存於本機的資料夾中,不過VWD有一項特別的「虛擬網站」功能,可在電腦上啟動模擬的Web伺服器,以供ASP.NET網頁。此功能讓我們可在開發過程中,不必架設實際的Web伺服器,也可測試ASP.NET網頁在伺服器上執行的效果。由瀏覽器經由虛擬網站來瀏覽開發中的ASP.NET網頁時,即是模擬使用者實際經由網路存取網站伺服器網頁的情形。
剛建好的新網站,其中即會含有1個資料夾及3個檔案(展開右邊方案總管窗格中的加號,可看到另一個檔案)。這些資料夾和檔案雖暫時用不到,但還是先來認識一下:
App_Data:這個資料夾是用來存放ASP.NET所要用到的資料檔,可以是SQL Server的資料庫檔或XML檔案。
Default.aspx:aspx是預設的ASP.NET網頁副檔名;Default則是預設的首頁名稱。當我們在VWD中建立新的ASP.NET網頁時,預設也都是以Default為主檔名,並會依序加上數字編號,不過我們可自行設定新的檔案名稱。
Default.aspx.cs:按Default.aspx前的加號按鈕時才會看到,此為Default.aspx網頁的ASP.NET程式碼所在的檔案,副檔名為cs表示其為C#程式。此種將程式碼與網頁內容分開的方法,稱為程式碼後置(Code-Behined)。
web.config:這是ASP.NET的網站設定檔,當我們希望ASP.NET的行為與預設不同時,即需在web.config寫入新的設定值。
閱讀全文...
無論使用C#或是VB.NET,當你要透過ADO.NET連接SQL Server資料庫的時候,必須指定連接字串,因此我們來看一下相關連線字串的彙總。
最簡單的連線字串,是以信任連線的方式連接 SQL Server 資料庫,字串如下:
Server=ServerAddress;Database=DataBaseName;Trusted_Connection=True;
ServerAddress是資料庫伺服器的名稱,DataBaseName則是所要連接的資料庫名稱,Trusted_Connection設為True,表示直接透過信任連線連接,因此不需要指定帳號密碼資料。
底下是非信任連線的狀況,其中的Trusted_Connection設定為flase,因此必須再指定ID與Password兩個屬性值給他,這兩個值分別代表開啟資料庫所需的帳號與密碼:
Server=ServerAddress;Database=DataBaseName;User ID=Username;Password=Password;Trusted_Connection=False;
除了上述的語法,你也可以利用以下的替代語法:
Data Source=ServerAddress;Initial Catalog=DataBaseName;Integrated Security=SSPI;
Data Source=ServerAddress;Initial Catalog=DataBaseName;User Id=myUsername;Password=myPassword;
「Integrated Security=SSPI」的意義與「Trusted_Connection=True」的相同,其他的幾個項目則對應至相同的屬性。
另外,你也可以透過指定 IP Address 的方式,連接逺端資料庫,字串如下,要特別注意的是,其中的Data Source除了IP位址,最後一個數字「1433」,是SQL Server的預設連接埠:
Data Source=192.168.100.100,1433;Network Library=DBMSSOCN;
Initial Catalog=DataBaseName;User ID=Username;Password=PasswordName;
如果你使用的是SQL Server Express版本,則連線字串是相同的,差別只在於Server名稱必須加上一個SQLEXPRESS ,如下式:
Server=ServerAddress\SQLEXPRESS ;Database=DataBaseName;Trusted_Connection=True;
閱讀全文...
「.NET Framework類別函式庫」(.NET Framework Class Library)提供很多功能強大的類別,我們可以直接在C#程式使用這個類別函式庫來輕鬆擴充程式的功能。
.NET Framework類別函式庫是一個龐大且良好組織架構的函式庫,各種.NET Framework支援的程式語言都可以使用相同的.NET Framework類別函式庫,例如C#或Visual Basic 2005程式語言。
.NET Framework類別函式庫的類別架構是使用稱為「名稱空間」(Namespaces,也稱為命名空間)的階層類別架構,每一個名稱空間能夠擁有多個類別,如下圖所示:

上述圖例的System是最基礎的名稱空間,其下擁有基本資料型態的System.Int32(每一階層的名稱空間是使用「.」運算子連接)、System.Byte、System.Single和System.String等名稱空間。這些名稱空間的類別是對應C#語言的內建資料型態。換句話說,C#資料型態都擁有對應的.NET Framework類別物件。
System.Windows.Forms是表單控制項的父名稱空間,其下的名稱空間就是各種控制項的類別:System.IO是基本輸出與輸入和檔案處理的名稱空間。
閱讀全文...
由於微軟希望將.NET做為未來開發所有不同類型專案的平台,也就是專案應用的底層。
在此一底層中,設計人員應常會看到Windows Form及Web Form等兩個名詞。這兩個名詞分別表示開發在Windows及Web中執行的應用程式,由於執行環境不同,故.NET為這兩種環境的介面,區分為Windows Form及Web Form。若以內容而言,Windows Form及Web Form提供的內容就是各種控制項。
換言之,Web Form就是以ASP.NET開發的網頁,在網頁內就只能使用各種Web Form提供的功能,也就是控制項。
若使用Visual Studio.NET,會在分別使用Windows應用程式及Web應用程式等不同專案時,自動顯示可使用的控制項。
所以若要在SDK輔助說明中尋找有關控制項的說明,請先了解型態,如.aspx網頁必須使用Web Form提供的控制項。
閱讀全文...
什麼是.NET?一言以敝之,就是「可提供多種語言,進行開發的技術平台」,至於使用的語言種類、開發的應用系統在何處執行等,微軟都希望可做到多語言及多平台。換言之,不論開發人員擅長的語言為何、應用系統完成後的執行位置為何等,都可使用.NET進行開發,這就是.NET的目的。
.NET如何做到此點,首先由其內容觀之,共包括如下四個組成:
Common Language Runtime(CLR):元件的開發過程中,它扮演著如同runtime的角色,執行測試。當元件在執行時,runtime負責管理記憶體的分配,啟動以及結束執行緒與程序,強制執行安全原則,並滿足所有元件與其他元件間可能具有的相依性。
.NET Framework Class Library:其內容是所有可重複使用的類別庫(或程式庫),並可與CLR緊密結合。它包含了數個命名空間(Namespace),而各Namespace之下就是可用的程式庫。
ADO.NET:就是名為System.Data的Namespace,其內就是ADO.NET所有物件模組的類別,目的是「在記憶體內處理資料庫」。
ASP.NET:ASP.NET是一個建構在CLR上,可供撰寫程式的平台,並可在伺服器上使用,以建構強力的Web應用程式。重點是Web Forms(即.aspx檔案),提供簡易的設計方式,可供建置動態的Web使用者介面。並提供建構分散式Web基礎應用程式所需的建構區塊,即以XML資料為傳輸標準的Web Services。
以上就是.NET的四項組成,其中CLR是.NET引擎的作業,與設計人員及使用者較無直接關係,後三者皆會在設計時,依不同目的而予以引用。
閱讀全文...
C#語言是一種物件導向程式語言,其精神是物件,但支援物件的程式語言並不一定就是一種物件導向程式語言,它可能只是物件基礎程式語言(Object-based Languages),只提供資料抽象化和物件觀念。例如:Visual Basic 6.0。
物件的基本觀念物件可以視為提供特定功能的元件或黑盒子,我們不用考慮元件內部詳細的資料或程式碼,只需知道物件提供哪些方法和屬性,以及如何使用它,一樣可以使用物件來建立所需的應用程式。
事實上,物件導向程式設計的目的就是讓設計者自行定義物件或擴充存在的物件功能,簡單的說,就是使用物件基礎程式設計來建立應用程式。
物件
物件(objects)是物件導向程式的基礎,簡單的說,物件是資料(Data)和包含處理此資料程式碼(稱為方法Method)的綜合體。
「類別」(Class)是定義物件內容的模子,透過模子可以建立屬於同一個類別的多個物件,例如:Label控制項是一個類別,當我們在表單上新增多個標籤控制項後,就是使用類別建立名為label1和label2等多個物件。
當程式碼使用類別建立物件後,我們並不用考慮物件內部的處理方式,只需知道它提供的屬性和方法與如何使用它,就可以使用這些物件來建立程式。
事實上,Windows應用程式的組成元件都是物件,在表單中的控制項,例如:文字方塊、清單方塊、標籤和按鈕等都是一個個物件。
屬性
物件的屬性(Properties)是物件的性質和狀態,例如:文字方塊控制項提供MaxLength屬性設定輸入字串的長度,標籤物件的BackColor可以指定背景色彩,如下所示:
label1.BackColor;
textBox1.MaxLength;
PS:句點「‧」是物件運算子,在程式碼中的物件是使用句點來存取物件屬性值和呼叫物件的方法。
方法
方法(Methods)是物件的處理函數,也就是執行物件提供的功能。例如:Graphics繪圖物件g提供方法可以繪出字串和畫線,如下所示:
g.DrawString();
g.DrawLine();
上述程式碼使用Graphics物件的方法。事實上,我們並不需要知道繪出字串和畫線的程式碼是什麼?只需知道物件提供的方法需要如何用,指定參數後,就可以繪出指定的圖形。
事件
事件(Events)本身是一個物件,它代表使用者按下滑鼠按鍵或鍵盤按鍵等操作後,所觸發的動作進而造成控制項狀態的改變,當這些改變發生時,就會觸發對應的事件物件。我們可以針對事件來作進一步處理。
物件可以建立事件處理程序來處理事件,這種以事件設計程式的方式,稱為「事件驅動程式設計」(Event-driven Programming)。例如:Button控制項button1觸發的Click事件,其事件處理程序如下所示:
private void button1_Click(object sender, EventArgs e)
{
... ...
}
上述事件處理程序擁有2個參數。其說明如下所示:
‧object物件:觸發事件的來源物件,也就是哪一個物件產生此事件。
‧Eventargs物件:事件物件本身,包含事件的相關資訊。
閱讀全文...
程式語言的「開發環境」(Development Environment)是一組工具程式用來幫助程式設計者建立、編譯和維護程式語言建立的應用程式。
目前大部分高階程式語言都擁有整合開發環境,稱為「IDE」(Integrated Development Environment),只需再同一個應用程式就可以編輯、編譯和執行特定語言的應用程式。
微軟的Visual Studio微軟C#語言的整合開發環境是Visual Studio,它是微軟公司開發的整合開發環境,能夠再同一套應用程式編輯、編譯、除錯和測試C#等.NET語言的應用程式。
Visual Studio 2005/2008是一套支援.NET Framework的整合開發環境,可以使用C#、Visual basic、C++和J#等語言來建立Windows、ASP.NET、主控台和Web Services等各種不同的應用程式。
Visual Studio整合開發環境
在Visual Studio 2005/2008整合開發環境建立的應用程式是在.NET Framework的CLR平台上執行,如下圖所示:

上述圖例在Windows作業系統安裝.NET Framework 2.0/3.5版後,就可以使用Visual Studio 2005/2008,以.NET語言來建立WindowsForms、ASP.NET、ADO.NET和XML應用程式。
Visual Studio 2005/2008是.NET平台的整合開發環境,提供Express版本讓初學者和學生能夠快速建立.NET應用程式。
閱讀全文...
微軟C#語言是一種支援.NET Framework平台的程式語言,它可以說是C/C++語言的進化版本,一種由微軟公司所獨立發展的物件導向程式語言。
.NET Framework的基礎.NET Framework是微軟新世代的程式開發平台,它是由CLR(Common Language Runtime)和.NET Framework類別所組成。我們可以使用.NET Framework支援的程式語言,例如C#、Visual Basic和C++等來建立.NET應用程式。
.NET Framework程式檔案在使用.NET編譯程式編譯時,並不是直接編譯成CPU的機器語言,而是一種中間程式語言稱為「MSIL」(Microsoft Intermediate Language)。等到執行程式時,CLR使用「JIT」(Just In Time)編譯程式將MSIL轉換成機器語言來執行,其架構如下圖所示:

上述圖例不論使用C#、Visual Basic或C++語言建立的原始程式碼,在編譯成MSIL後,就可以在不同Windows作業系統安裝CLR,撰寫的程式碼就可以跨平台在不同Windows作業系統上來執行。
.NET Framework類別函式庫是一個龐大的類別函式庫,只需支援.NET Framework的程式語言,都可以使用此類別函式庫的類別和方法。
微軟的C#語言
C#語言是一種簡單的程式語言,因為它刪除Java和C++語言的複雜語法和一些常造成程式設計困擾的缺點,例如:指標、含括(Include)、巨集、範本(Templates)、多重繼承和虛擬繼承等,再加上大部分語法都源於C和C++語言,也和Java語言十分相似。
C#語言也是一種非常現代化的程式語言,因為C#語言支援現代程式語言所擁有的例外處理(Exception Handling)、垃圾收集(Garbage Collection)、擴充資料型態和程式碼安全。而且C#語言是一種真正的物件導向程式語言,完全支援對策、繼承和多型的物件導向程式語言特性。
閱讀全文...