close

此為文章備份:[習題] 補充本書第14章 (14-2)的範例--自己撰寫程式SqlDataSource「新增資料」,並且採用參數(InsertParameters)

http://www.dotblogs.com.tw/mis2000lab/archive/2009/09/30/sqldatasource_insert_insertparameters_20090930.aspx

 

 

 

文魁出版, ASP.NET專題實務(本書有推出兩本,分別是 VB與 C#語法各一本)

ASP.NET專題實務  (文魁出版,VB版 P8187 / C#版P09027

第14章收錄了很多 ADO.NET的程式,透過自己動手撰寫,可以瞭解很多運作的原理。

這也是初學者、市面上其他書本比較缺乏的部份。

很多初學者只會用 SqlDataSource這種精靈,卻不知道運作的原理?更別說自己動手去改寫了。

本書第14章共有 DataReader / DataSet / xxxDataSource這些常用的 ADO.NET元件的程式(100%手寫)

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

 

最近在整理文件的時候,補充了一些範例,跟書本有關的,先給讀者作補充。

如果您不是本書讀者,請先看過這一篇 --

ADO.NET #4(改),自己設定輸入畫面,讓SqlDataSource幫我們完成「新增」一筆資料 

 

本文將補充一個範例,作為本書 Ch14-2 的結尾。

自己撰寫程式,控制SqlDataSource的「新增資料」,並且採用參數(InsertParameters)

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

 

我們不使用現成的控制項,畫面全都採用最簡單的 TextBox / DropDownList控制項

自己來作 "資料新增"的畫面

HTML畫面如下:

 

  • <body>  
  •     <form id="form1" runat="server">  
  •     <div>  
  •         <strong><span style="color: #006600">  
  •         從資料庫連結開始,100%都用手寫程式  
  •   
  •         ASP.NET 2.0 ---- SqlDataSource版</span><span class="style1"> (參數InsertParameters)</span></strong>  
  •   
  •           
  •   
  •         新增資料後,下面的GridView會立即出現新資料。  
  •   
  •         title :   
  •         <asp:TextBox ID="TextBox1" runat="server" Width="182px"></asp:TextBox>  
  •   
  •         class :   
  •         <asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple">  
  •             <asp:ListItem Selected="True">科技</asp:ListItem>  
  •             <asp:ListItem>教育</asp:ListItem>  
  •             <asp:ListItem>政治</asp:ListItem>  
  •             <asp:ListItem>娛樂</asp:ListItem>  
  •             <asp:ListItem>其他</asp:ListItem>     
  •         </asp:ListBox>  
  •   
  •         summary :   
  •         <asp:TextBox ID="TextBox2" runat="server" Width="506px"></asp:TextBox>  
  •   
  •         article :   
  •         <asp:TextBox ID="TextBox3" runat="server" Height="116px" TextMode="MultiLine" Width="522px"></asp:TextBox>  
  •   
  •         author :   
  •         <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>  
  •         &nbsp; &nbsp;   
  •   
  •         <asp:Button ID="Button1" runat="server" Text="Insert Into!"    
  •             onclick="Button1_Click" />  
  •   
  •   
  •        
  •     </div>  
  •     </form>  
  •     
  •  </body>  
  •  

     

    後置程式碼如下:

    VB版

     

  • '----自己寫的----   
  •  Imports System   
  •  Imports System.Web.Configuration   
  •  Imports System.Data   
  •  Imports System.Data.SqlClient   
  •   
  •   
  •   
  •   
  •   
  •     Protected Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Button1.Click   
  •         '== 資料新增 ==   
  •         Dim SqlDataSource3 As New SqlDataSource()   
  •   
  •         '== 連結資料庫的連接字串 ConnectionString  ==   
  •         SqlDataSource3.ConnectionString = WebConfigurationManager.ConnectionStrings("testConnectionString").ConnectionString   
  •   
  •         '== 改用參數 (InsertParameters)來進行輸入! ==   
  •         SqlDataSource3.InsertParameters.Add("title", TextBox1.Text)   
  •         SqlDataSource3.InsertParameters.Add("test_time", DateTime.Now.ToShortDateString())   
  •         SqlDataSource3.InsertParameters.Add("class", ListBox1.SelectedItem.Value)   
  •         SqlDataSource3.InsertParameters.Add("summary", TextBox2.Text)   
  •         SqlDataSource3.InsertParameters.Add("article", TextBox3.Text)   
  •         SqlDataSource3.InsertParameters.Add("author", TextBox4.Text)   
  •   
  •         '== 撰寫SQL指令(Insert Into) ==   
  •         SqlDataSource3.InsertCommand = "Insert into test(title,test_time,class,summary,article,author) values(@title,@test_time,@class,@summary,@article,@author)"  
  •   
  •         '== 執行SQL指令 / 新增 .Insert() ==   
  •         Dim aff_row As Integer = SqlDataSource3.Insert()   
  •   
  •         If (aff_row = 0) Then  
  •             Response.Write("資料新增失敗!")   
  •         Else  
  •             Response.Write("資料新增成功!")   
  •         End If  
  •   
  •         myDBInit()    '== GridView的資料重整   
  •   
  •     End Sub  
  •  

     

    C#版

     

  • using System.Configuration;   //自己寫的   
  •  using System.Data;    //自己寫的   
  •   
  •   
  •   
  •   
  •     protected void Button1_Click(object sender, EventArgs e)   
  •     {   
  •         //== 資料新增 ==   
  •         SqlDataSource SqlDataSource3 = new SqlDataSource();   
  •   
  •         //== 連結資料庫的連接字串 ConnectionString  ==   
  •         SqlDataSource3.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;   
  •   
  •         //== 改用參數 (InsertParameters)來進行輸入! ==   
  •         SqlDataSource3.InsertParameters.Add("title", TextBox1.Text);   
  •         SqlDataSource3.InsertParameters.Add("test_time", DateTime.Now.ToShortDateString());   
  •         SqlDataSource3.InsertParameters.Add("class", ListBox1.SelectedItem.Value);   
  •         SqlDataSource3.InsertParameters.Add("summary", TextBox2.Text);   
  •         SqlDataSource3.InsertParameters.Add("article", TextBox3.Text);   
  •         SqlDataSource3.InsertParameters.Add("author", TextBox4.Text);   
  •   
  •         //== 撰寫SQL指令(Insert Into) ==   
  •         SqlDataSource3.InsertCommand = "Insert into test(title,test_time,class,summary,article,author) values(@title,@test_time,@class,@summary,@article,@author)";   
  •            
  •   
  •         //== 執行SQL指令 / 新增 .Insert() ==   
  •         int aff_row = SqlDataSource3.Insert();   
  •   
  •         if (aff_row == 0)   
  •             Response.Write("資料新增失敗!");   
  •         else  
  •             Response.Write("資料新增成功!");   
  •   
  •   
  •         myDBInit();    //== GridView的資料重整   
  •     }  
  •  

      

     

    ......  寄信給我    mis2000lab (at) 雅虎.com.台灣 ................................................................................................................
    ASP.NET專題實務  (文魁出版,VB版 P8187 / C#版P09027

    .............................................................................................................. 寄信給我    mis2000lab (at) 雅虎.com.台灣 ........

     

    arrow
    arrow
      全站熱搜

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