此為文章備份:[習題] 補充本書第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.台灣 ........
留言列表