此為文章備份:[習題] 補充本書第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> <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 Object, ByVal 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.台灣 ........