2011年9月8日 星期四

[WinForm]Windows程式(非網頁) #2 -- 跨平台的 ADO.NET程式(簡單入門)

這是我的文章備份,我不常來這裡更新文章
如果您希望學習第一手的資訊,別忘了到我的網站去看看:

[WinForm]Windows程式(非網頁) #2 -- 跨平台的 ADO.NET程式(簡單入門)

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/05/adonet_web_windows_2011_datareader.aspx


在 ASP.NET上面,初學者都會先從 SqlDataSource這種精靈學起,用他來存取資料庫。

但他的限制多,例如:一定要有 Primary Key才能自動產生CRUD的SQL指令。

也只能針對「單一資料表」來做事。

我們來看看 xxxDataSource這些控制項,

不管是 SqlDataSource或是 AccessDataSource

其實都是在 System.Web.UI.WebControls命名空間底下,

是的!這些精靈(控制項)都是給 Web使用的

您可以發現 Web程式使用的「SqlDataSource」控制項
骨子裡面,還是 ADO.NET的「DataReader、DataSet」兩兄弟!

真正好的學習(投資),大家都希望學通一種之後,

以後可以重複使用。

學習 ADO.NET程式就是如此。

我把 Web版(ASP.NET)的一支基礎ADO.NET程式,直接放到 Windows Form裡面執行。

幾乎不用改,您的程式就能連上DB。



真正做到「跨平台(或是說 "跨" Windows平台與 Web平台)」的資料庫存取

================================================================

以下會有幾張圖片,

介紹您如何應用「您在 Web上(寫ASP.NET)的經驗」,把 ADO.NET程式轉成「Windows版」的 .EXE執行檔。

完整的程式碼如下( Windows Form )

XYZ,代表您的資料庫「連結字串」,事先存放在 App.config檔案

private void Button1_Click(object sender, EventArgs e)
{

//=======微軟SDK文件的範本=======
//----(連結資料庫)----連結字串,存在 App.Config裡面。這是 Windows From使用的設定檔。

SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["XYZ"].ConnectionString);
//----上面已經事先寫好 System.Configuration命名空間 ----

SqlDataReader dr = null;

SqlCommand cmd = new SqlCommand("select top 10 id, title from test", Conn);

try //==== 以下程式,只放「執行期間」的指令!=====================
{
Conn.Open(); //---- 這時候才連結DB

dr = cmd.ExecuteReader(); //---- 這時候執行SQL指令,取出資料

while (dr.Read())
{
TextBox1.Text += dr["id"].ToString() + "--" + dr["title"].ToString() + "\r\n";
}
}

catch (Exception ex) //---- 如果程式有錯誤或是例外狀況,將執行這一段
{
Console.WriteLine("Error Message---- " + ex.ToString());
//-- Windows程式,改用 Console來取代 Response.Write()
}

finally
{
if (dr != null)
{
cmd.Cancel();
dr.Close();
}
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
}
}

}

Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'=======微軟SDK文件的範本=======
'----(連結資料庫)----連結字串,存在 App.Config裡面。這是 Windows From使用的設定檔。

Dim Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("XYZ").ConnectionString)
'----上面已經事先寫好 System.Configuration命名空間 ----

Dim dr As SqlDataReader = Nothing

Dim cmd As New SqlCommand("select top 10 id, title from test", Conn)

Try '==== 以下程式,只放「執行期間」的指令!=====================
Conn.Open() '---- 這時候才連結DB

dr = cmd.ExecuteReader() '---- 這時候執行SQL指令,取出資料

While dr.Read()
TextBox1.Text &= dr("id") & "--" & dr("title") & vbCrLf
End While

Catch ex As Exception '---- 如果程式有錯誤或是例外狀況,將執行這一段
Console.WriteLine("Error Message---- " & ex.ToString())
'-- Windows程式,改用 Console來取代 Response.Write()

Finally
If Not (dr Is Nothing) Then
cmd.Cancel()
dr.Close()
End If
If (Conn.State = ConnectionState.Open) Then
Conn.Close()
Conn.Dispose()
End If
End Try

End Sub

===============================================

以下是廣告

===============================================

如果您買的 ASP.NET書籍,裡面 介紹 xxxDataSource

甚至連「ADO.NET」、「DataReader」、「DataSet」這些字眼都沒提及

或許您該給 "自己"一個機會

多買幾本書來看看,多瞭解其他的老師、作者是怎麼介紹與學習 .NET

找一本「範例多」的書,不要買「每一章,只介紹 "精靈步驟"」就草草結束的書


找一個願意跟您一起學習、不斷分享的作者
找一個繼續與讀者、與學生「面對面」教學、互動的團隊,他們才能改善書本的難易度,才會繼續補充內容與成長

找一個會持續改善、持續補充範例的作者,跟你一起前進
找一個「每次出書,都有新成長、新補充、新習題」的團隊,因為他持續前進,讀者也才會學到「持續前進」的東西

真的 有這樣的作者與老師存在,
只要您願意多多比較,您就會遇見他!

ADO.NET,只要您寫商用系統、用「資料庫」,一定都會遇見

學會他,受用無窮!


............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......

ASP.NET 4.0 專題實務(松崗出版)

上 / 下兩集合購。優惠價1,180元(免郵資)

上集( .NET 4.0版)全新改寫。範例增加66%,內容增加35%。上市以來,熱銷五刷

下集(第二版,黑皮書)上市一個月熱銷再刷,2010一年內(第一版)熱銷四刷第二版半年熱銷四刷! 下集內容增加66%。

上下兩集將近2,000頁,堪稱國內 [最詳盡]的ASP.NET範例教學。

南無普光佛  南無普明佛  南無普淨佛  南無多摩羅跋栴檀香佛  南無栴檀光佛  南無摩尼幢佛  南無歡喜藏摩尼寶積佛  南無一切世間樂見上大精進佛  南無摩尼幢燈光佛
南無慧炬照佛  南無海德光明佛  南無金剛牢強普散金光佛  南無大強精進勇猛佛  南無大悲光佛  南無慈力王佛  南無慈藏佛  南無栴檀窟莊嚴勝佛  南無賢善首佛
南無善意佛  南無廣莊嚴王佛  南無金華光佛  南無寶蓋照空自在力王佛  南無虛空寶華光佛 南無琉璃莊嚴王佛  南無普現色身光佛  南無不動智光佛 南無降伏眾魔王佛  
南無才光明佛 南無智慧勝佛  南無彌勒仙光佛  南無善寂月音妙尊智王佛  南無世淨光佛  南無龍種上尊王佛  南無日月光佛 南無日月珠光佛  南無慧幢勝王佛  
南無師子吼自在力王佛  南無妙音勝佛  南無常光幢佛  南無觀世燈佛 南無慧威燈王佛  南無法勝王佛  南無須彌光佛 南無須曼那華光佛 南無優曇鉢羅華殊勝王佛  
南無大慧力王佛  南無阿閦毗歡喜光佛  南無無量音聲王佛  南無才光佛  南無金海光佛  南無山海慧自在通王佛  南無大通光佛  南無一切法常滿王佛  南無釋迦牟尼佛
南無金剛不壞佛  南無寶光佛  南無龍尊王佛  南無精進軍佛  南無精進喜佛  南無寶火佛  南無寶月光佛  南無現無愚佛  南無寶月佛  南無無垢佛  南無離垢佛  
南無勇施佛  南無清淨佛  南無清淨施佛  南無娑留那佛  南無水天佛  南無堅德佛  南無栴檀功德佛  南無無量掬光佛  南無光德佛  南無無憂德佛
南無那羅延佛  南無功德華佛  南無蓮華光遊戲神通佛  南無財功德佛  南無德念佛  南無善名稱功德佛  南無紅燄帝幢王佛  南無善遊步功德佛 南無鬪戰勝佛
南無善遊步佛  南無周匝莊嚴功德佛  南無寶華遊步佛  南無寶蓮華善住娑羅樹王佛  南無法界藏身阿彌陀佛

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......

[Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand

這是我的文章備份,我不常來這裡更新文章
如果您希望學習地一手的資訊,
別忘了到我的網站去看看:

[Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/07/repeater_itemdatabound_itemcreated_itemcommand.aspx


之前已經有一篇類似的文章了,

請看:GridView的 RowCreated事件與 RowDataBound事件的小差異
http://www.dotblogs.com.tw/mis2000lab/archive/2010/10/13/gridview_rowcreated_rowdatabound.aspx

也推薦 MSDN這三篇文章,裡面的範例淺顯易懂。

完成後,才接以下的內容。

Repeater.ItemDataBound 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx

Repeater.ItemCreated 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemcreated.aspx

Repeater.ItemCommand 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemcommand.aspx

請看以下兩張圖片的解說:

是的,我正在寫新書(寫一本範例大全、

類似 ASP.NET控制項的各種屬性、方法、事件,每一個都提供範例作參考,這樣學習最深入)

所以直接貼 Word的畫面截圖,請見諒。


............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......

ASP.NET 4.0 專題實務(松崗出版)

上 / 下兩集合購。優惠價1,180元(免郵資)

上集( .NET 4.0版)全新改寫。範例增加66%,內容增加35%。上市以來,熱銷五刷

下集(第二版,黑皮書)上市一個月熱銷再刷,2010一年內(第一版)熱銷四刷第二版半年熱銷四刷! 下集內容增加66%。

上下兩集將近2,000頁,堪稱國內 [最詳盡]的ASP.NET範例教學。

南無普光佛  南無普明佛  南無普淨佛  南無多摩羅跋栴檀香佛  南無栴檀光佛  南無摩尼幢佛  南無歡喜藏摩尼寶積佛  南無一切世間樂見上大精進佛  南無摩尼幢燈光佛
南無慧炬照佛  南無海德光明佛  南無金剛牢強普散金光佛  南無大強精進勇猛佛  南無大悲光佛  南無慈力王佛  南無慈藏佛  南無栴檀窟莊嚴勝佛  南無賢善首佛
南無善意佛  南無廣莊嚴王佛  南無金華光佛  南無寶蓋照空自在力王佛  南無虛空寶華光佛 南無琉璃莊嚴王佛  南無普現色身光佛  南無不動智光佛 南無降伏眾魔王佛  
南無才光明佛 南無智慧勝佛  南無彌勒仙光佛  南無善寂月音妙尊智王佛  南無世淨光佛  南無龍種上尊王佛  南無日月光佛 南無日月珠光佛  南無慧幢勝王佛  
南無師子吼自在力王佛  南無妙音勝佛  南無常光幢佛  南無觀世燈佛 南無慧威燈王佛  南無法勝王佛  南無須彌光佛 南無須曼那華光佛 南無優曇鉢羅華殊勝王佛  
南無大慧力王佛  南無阿閦毗歡喜光佛  南無無量音聲王佛  南無才光佛  南無金海光佛  南無山海慧自在通王佛  南無大通光佛  南無一切法常滿王佛  南無釋迦牟尼佛
南無金剛不壞佛  南無寶光佛  南無龍尊王佛  南無精進軍佛  南無精進喜佛  南無寶火佛  南無寶月光佛  南無現無愚佛  南無寶月佛  南無無垢佛  南無離垢佛  
南無勇施佛  南無清淨佛  南無清淨施佛  南無娑留那佛  南無水天佛  南無堅德佛  南無栴檀功德佛  南無無量掬光佛  南無光德佛  南無無憂德佛
南無那羅延佛  南無功德華佛  南無蓮華光遊戲神通佛  南無財功德佛  南無德念佛  南無善名稱功德佛  南無紅燄帝幢王佛  南無善遊步功德佛 南無鬪戰勝佛
南無善遊步佛  南無周匝莊嚴功德佛  南無寶華遊步佛  南無寶蓮華善住娑羅樹王佛  南無法界藏身阿彌陀佛

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......


[GridView]在 RowCommand事件中,自訂的Button 如何取出某一列(RowIndex) 的索引值

這是我的文章備份,我不常來這裡更新文章
如果您希望學習地一手的資訊,
別忘了到我的網站去看看:



[GridView]在 RowCommand事件中,自訂的Button 如何取出某一列(RowIndex) 的索引值

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/08/gridview_selectedindex_dataitemindex_rowcommand_2011.aspx





[GridView]在 RowCommand事件中,自訂的Button 如何取出「這一列」的索引值(Row Index)


如果使用 GridView自己的、內建的「選取(Select)」按鈕,那就簡單囉。
如果是在 SelectedIndexChanged事件內,那也簡單囉。

請看我的書本「上集」(ASP.NET 專題實務)都有講到

以前發表過的文章,已經收錄在書本裡面:

[習題] "選取" Gridview的某一列(RowIndex) & 那一列對應資料表的P.K.值
http://www.dotblogs.com.tw/mis2000lab/archive/2008/11/07/gridview_selectedindex_pk.aspx



如果限制一些條件:

第一,必須使用 自己設定的 Button按鈕(放在 GridView身體裡面,
特殊的CommandName)

第二,搭配 RowCommand事件來作



我是在這個地方找到答案的,特別感謝

資料來源:http://ranafaisal.wordpress.com/2008/03/31/how-to-get-the-current-row-in-gridview-row-command-event/

為自己作一個記錄,也分享給大家。


Protected Sub GridView1_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

Dim myButton As Button = CType(e.CommandSource, Button)
Dim myRow As GridViewRow = CType(myButton.NamingContainer, GridViewRow)

Response.Write("
RowCommand事件裡面,列的「索引值」---" & myRow.DataItemIndex)

End Sub



上面的程式,要改成 C#不難吧?

大致如下,我沒親自 run,僅供參考。


Button myButton = (Button)e.CommandSource;
GridViewRow myRow = (GridViewRow)myButton.NamingContainer;

Response.Write("
RowCommand事件裡面,列的「索引值」---" + myRow.DataItemIndex);




............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......

ASP.NET 4.0 專題實務(松崗出版)

上 / 下兩集合購。優惠價1,180元(免郵資)

上集( .NET 4.0版)全新改寫。範例增加66%,內容增加35%。上市以來,熱銷五刷

下集(第二版,黑皮書)上市一個月熱銷再刷,2010一年內(第一版)熱銷四刷第二版半年熱銷四刷! 下集內容增加66%。

上下兩集將近2,000頁,堪稱國內 [最詳盡]的ASP.NET範例教學。

南無普光佛  南無普明佛  南無普淨佛  南無多摩羅跋栴檀香佛  南無栴檀光佛  南無摩尼幢佛  南無歡喜藏摩尼寶積佛  南無一切世間樂見上大精進佛  南無摩尼幢燈光佛
南無慧炬照佛  南無海德光明佛  南無金剛牢強普散金光佛  南無大強精進勇猛佛  南無大悲光佛  南無慈力王佛  南無慈藏佛  南無栴檀窟莊嚴勝佛  南無賢善首佛
南無善意佛  南無廣莊嚴王佛  南無金華光佛  南無寶蓋照空自在力王佛  南無虛空寶華光佛 南無琉璃莊嚴王佛  南無普現色身光佛  南無不動智光佛 南無降伏眾魔王佛  
南無才光明佛 南無智慧勝佛  南無彌勒仙光佛  南無善寂月音妙尊智王佛  南無世淨光佛  南無龍種上尊王佛  南無日月光佛 南無日月珠光佛  南無慧幢勝王佛  
南無師子吼自在力王佛  南無妙音勝佛  南無常光幢佛  南無觀世燈佛 南無慧威燈王佛  南無法勝王佛  南無須彌光佛 南無須曼那華光佛 南無優曇鉢羅華殊勝王佛  
南無大慧力王佛  南無阿閦毗歡喜光佛  南無無量音聲王佛  南無才光佛  南無金海光佛  南無山海慧自在通王佛  南無大通光佛  南無一切法常滿王佛  南無釋迦牟尼佛
南無金剛不壞佛  南無寶光佛  南無龍尊王佛  南無精進軍佛  南無精進喜佛  南無寶火佛  南無寶月光佛  南無現無愚佛  南無寶月佛  南無無垢佛  南無離垢佛  
南無勇施佛  南無清淨佛  南無清淨施佛  南無娑留那佛  南無水天佛  南無堅德佛  南無栴檀功德佛  南無無量掬光佛  南無光德佛  南無無憂德佛
南無那羅延佛  南無功德華佛  南無蓮華光遊戲神通佛  南無財功德佛  南無德念佛  南無善名稱功德佛  南無紅燄帝幢王佛  南無善遊步功德佛 南無鬪戰勝佛
南無善遊步佛  南無周匝莊嚴功德佛  南無寶華遊步佛  南無寶蓮華善住娑羅樹王佛  南無法界藏身阿彌陀佛

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......