這是我的文章備份。
原文請看:

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/05/adonet_web_windows_2011_datareader.aspx
[WinForm]Windows程式(非網頁) #2 -- 跨平台的 ADO.NET程式(簡單入門)




在 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.台灣......

 

創作者介紹

MIS2000 Lab -- ASP.NET專題實務 / 線上教學文件

MIS2000 Lab 發表在 痞客邦 PIXNET 留言(0) 人氣()