Download presentation
Presentation is loading. Please wait.
1
ASP.NET 網頁製作教本 – 從基本語法學起
第10章 ADO.NET 與資料庫存取(二)
2
10-1 Command 物件與資料的增刪修改
3
Action Query 指令 刪除資料列:Delete 指令。 更新資料列:Update 指令 新增資料列:Insert Into 指令。
建立新資料表:Select Into 指令。
4
Delete 指令:刪除資料列 格式: Delete From 資料表 Where 條件式 例子:
5
Update 指令:更新資料列 Update 成績單 Set 數學 = 數學 ^ 0.5 * 10 Where 姓名 Like “王%”
6
Insert Into 指令:新增資料列 Insert Into 指令有兩種格式:
Insert Into 資料表 (欄位串列) Values (欄位值串列) Insert Into 資料表 (欄位一, 欄位二, …) Select …
7
Insert Into 指令:新增資料列 格式一:Insert Into … Values …(1)
8
Insert Into 指令:新增資料列 格式一:Insert Into … Values …(2)
9
Insert Into 指令:新增資料列 格式二:Insert Into … Select … (1)
10
Insert Into 指令:新增資料列 格式二:Insert Into … Select … (2)
11
Insert Into 指令:新增資料列 格式二:Insert Into … Select … (3)
如果兩者的欄位名稱或順序不一致,則應一一指定欄位名稱才可以,例如: Insert Into 成績單複製本 (姓名, 學號, 數學, 英文, 國文) Select 姓名, 學號, 數學 ^ 0.5 * 10, 英文 ^ 0.5 * 10, 國文 ^ 0.5 * 10 From 成績單
12
Select Into 指令:建立新資料表 Select Into 比較常見的用法是選取既有資料表的資料列,然後建立成另一個新的資料表,例如: Select * Into 數學高手 From 成績單 Where 數學 >= 90
13
利用 Command 物件執行Action Query
先利用 New OleDbCommand() 建立 Command 物件,然後再呼叫 ExecuteNonQuery 方法即可。 ' Conn為已連結到資料庫的Connection物件 Cmd = New OleDbCommand( SQL指令, Conn ) Cmd.ExecuteNonQuery()
14
利用 Command 物件執行Action Query – 測試程式
15
TestCmd.aspx Part I <%@ Import Namespace="System.Data" %>
Import Namespace="System.Data.OleDb" %> <HTML> <BODY bgcolor="#FFFFFF"> <H2>TestCmd.aspx -- Action Query 測試程式<HR></H2> <Form runat="server"> 資料庫:Sample.mdb<BR> 指 令:<asp:TextBox runat="server" id="SQL" Size=50 /> <p> <asp:Button runat="server" Text="執行" OnClick="RunSQL" />
16
TestCmd.aspx Part II <HR>指令執行情況:
<asp:Label runat="server" id="Msg" Text="尚未輸入 SQL 指令" ForeColor="Red" /> </Form> </BODY> </HTML> <script Language="VB" runat="server"> Sub RunSQL(sender As Object, e As EventArgs) Dim Conn As OleDbConnection Dim Cmd As OleDbCommand
17
TestCmd.aspx Part III Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0" Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" ) Conn = New OleDbConnection( Provider & ";" & DataBase ) Conn.Open() On Error Resume Next Cmd = New OleDbCommand( SQL.Text, Conn ) Cmd.ExecuteNonQuery() If Err.Number <> 0 Then Msg.Text = Err.Description Else Msg.Text = "成功!" End If Conn.Close() End Sub </script>
18
含有參數的 SQL 指令
19
Insert.aspx Part I %@ Import Namespace="System.Data" %>
Import Namespace="System.Data.OleDb" %> <Html> <Body BgColor="White"> <H3>Insert.aspx -- 新增資料到「成績單」資料表<HR></H3> <Form runat="server"> <Blockquote> 學號: <asp:TextBox runat="server" id="學號" /><br> 姓名: <asp:TextBox runat="server" id="姓名" /><br> 國文: <asp:TextBox runat="server" id="國文" /><br> 英文: <asp:TextBox runat="server" id="英文" /><br> 數學: <asp:TextBox runat="server" id="數學" /><p>
20
Insert.aspx Part II <asp:Button runat="server" Text="新增" OnClick="InsertData" /> </Blockquote> <HR><asp:Label runat="server" id="Msg" ForeColor="Red" /> </Form> </Body> </Html> <script Language="VB" runat="server"> Sub InsertData(sender As Object, e As EventArgs) Dim Conn As OleDbConnection Dim Cmd As OleDbCommand Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0" Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" ) Conn = New OleDbConnection( Provider & ";" & DataBase ) Conn.Open()
21
Insert.aspx Part III Dim SQL As String
SQL = "Insert Into 成績單 (學號, 姓名, 國文, 英文, 數學 ) Values( ?, ?, ?, ?, ?)" Cmd = New OleDbCommand( SQL, Conn ) Cmd.Parameters.Add( New OleDbParameter("學號", OleDbType.Integer)) Cmd.Parameters.Add( New OleDbParameter("姓名", OleDbType.Char, 10)) Cmd.Parameters.Add( New OleDbParameter("國文", OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbParameter("英文", OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbParameter(""數學", OleDbType.SmallInt))
22
Insert.aspx Part IV Cmd.Parameters("學號").Value = Val(學號.Text)
Cmd.Parameters("姓名").Value = 姓名.Text Cmd.Parameters("國文").Value = Val(國文.Text) Cmd.Parameters("英文").Value = Val(英文.Text) Cmd.Parameters("數學").Value = Val(數學.Text) Cmd.ExecuteNonQuery() If Err.Number <> 0 Then Msg.Text = Err.Description Else Msg.Text = "資料新增成功!" End If Conn.Close() End Sub </script>
23
設定參數型別的 Cmd.Parameters.Add() 敘述 (1)
「成績單」資料表的「學號、姓名、國文、英文、數學」欄位,而這幾個欄位的型別如下:
24
設定參數型別的 Cmd.Parameters.Add() 敘述 (2)
為了建立 5 個參數並且將其資料型別對應到上表的型別,所撰寫的敘述如下: Cmd.Parameters.Add( New OleDbParameter("學號", OleDbType.Integer)) Cmd.Parameters.Add( New OleDbParameter("姓名", OleDbType.Char, 10)) Cmd.Parameters.Add( New OleDbParameter("國文", OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbParameter("英文", OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbParameter("數學", OleDbType.SmallInt))
25
設定參數型別的 Cmd.Parameters.Add() 敘述 (3)
參數二(OleDbType) 型別的設定值
26
設定參數值的 Cmd.Parameters().Value 敘述
Cmd.Parameters("學號").Value = Val(學號.Text) Cmd.Parameters("姓名").Value = 姓名.Text Cmd.Parameters("國文").Value = Val(國文.Text) Cmd.Parameters("英文").Value = Val(英文.Text) Cmd.Parameters("數學").Value = Val(數學.Text) TextBox 所讀取的內容為字串資料,要呼叫 Val 函數將其轉換成數值資料。
27
含有參數的 SQL 指令 -- 具名的參數 Cmd.Parameters.Add( New OleDbType.Integer)) Cmd.Parameters.Add( New OleDbType.Char, 10)) Cmd.Parameters.Add( New OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbType.SmallInt)) = Val(學號.Text) = 姓名.Text = Val(國文.Text) = Val(英文.Text) = Val(數學.Text)
28
10-2 DataGrid 與資料的修改
29
DataGrid 與資料的修改
30
Update01.aspx -- 基本架構
31
DataGrid 的安插 <asp:DataGrid runat="server" id="MyGrid"
HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" OnEditCommand="EditData" OnUpdateCommand="UpdateData" OnCancelCommand="CancelEdit" DataKeyField="學號"> <Columns> <asp:EditCommandColumn HeaderText="修改" ItemStyle-Wrap="False" EditText="編輯" UpdateText="更新" CancelText="取消" /> </Columns> </asp:DataGrid>
32
幾個屬性的意義
33
EditData 事件程序的撰寫 Sub EditData(sender As Object, e As DataGridCommandEventArgs) MyGrid.EditItemIndex = e.Item.ItemIndex OpenDataBase_And_BindToDataGrid() End Sub
34
CancelEdit 事件程序的撰寫 Sub CancelEdit(sender As Object, e As DataGridCommandEventArgs) MyGrid.EditItemIndex = OpenDataBase_And_BindToDataGrid() End Sub
35
UpdateData 事件程序的撰寫 Part I
Sub UpdateData(sender As Object, e As DataGridCommandEventArgs) Dim TB(5) As TextBox TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox TB(3) = e.Item.Cells(3).Controls(0) ' 國文 TextBox TB(4) = e.Item.Cells(4).Controls(0) ' 英文 TextBox TB(5) = e.Item.Cells(5).Controls(0) ' 數學 TextBox
36
UpdateData 事件程序的撰寫 Part II
Dim Msg As String = "欲更新的資料:<blockquote>" Msg &= "DataKey = " & MyGrid.DataKeys(e.Item.ItemIndex) Msg &= "<br>Cell(1) = " & TB(1).Text Msg &= "<br>Cell(2) = " & TB(2).Text Msg &= "<br>Cell(3) = " & TB(3).Text Msg &= "<br>Cell(4) = " & TB(4).Text Msg &= "<br>Cell(5) = " & TB(5).Text & "</blockquote>" Response.Write( Msg ) MyGrid.EditItemIndex = -1 OpenDataBase_And_BindToDataGrid() End Sub
37
程式最重要的關鍵(1)
38
程式最重要的關鍵(2) Dim TB(5) As TextBox ' 宣告TextBox
' 將DataGrid中的TextBox指定給我們宣告的TextBox TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox TB(3) = e.Item.Cells(3).Controls(0) ' 國文 TextBox TB(4) = e.Item.Cells(4).Controls(0) ' 英文 TextBox TB(5) = e.Item.Cells(5).Controls(0) ' 數學 TextBox ' 接下來分別利用TB(1).Text、TB(2).Text、TB(3).Text、TB(4).Text ' 及TB(5).Text讀取DataGrid等5個TextBox的內容。
39
Update02.aspx – 將修改的資料寫入資料庫 Part I
#01 Sub UpdateData(sender As Object, e As DataGridCommandEventArgs) #02 Dim Conn As OleDbConnection #03 Dim Cmd As OleDbCommand #04 Dim SQL As String #05 #06 Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0" #07 Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" ) #08 Conn = New OleDbConnection( Provider & ";" & DataBase ) #09 Conn.Open() #10 #11 SQL = "Update 成績單 Set Where #12 Cmd = New OleDbCommand( SQL, Conn ) #13
40
Update02.aspx – 將修改的資料寫入資料庫 Part II
#14 Cmd.Parameters.Add( New OleDbType.Integer)) #15 Cmd.Parameters.Add( New OleDbType.Char, 10)) #16 Cmd.Parameters.Add( New OleDbType.SmallInt)) #17 Cmd.Parameters.Add( New OleDbType.SmallInt)) #18 Cmd.Parameters.Add( New OleDbType.SmallInt)) #19 Cmd.Parameters.Add( New OleDbType.Integer)) #20 #21 Dim TB(5) As TextBox #22 TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox #23 TB(2) = e.Item.Cells(2).Controls(0) ' 姓名 TextBox #24 TB(3) = e.Item.Cells(3).Controls(0) ' 國文 TextBox #25 TB(4) = e.Item.Cells(4).Controls(0) ' 英文 TextBox #26 TB(5) = e.Item.Cells(5).Controls(0) ' 數學 TextBox #27
41
Update02.aspx – 將修改的資料寫入資料庫 Part III
#28 = MyGrid.DataKeys(e.Item.ItemIndex) #29 = Val(TB(1).Text) #30 = TB(2).Text #31 = Val(TB(3).Text) #32 = Val(TB(4).Text) #33 = Val(TB(5).Text) #34 Cmd.ExecuteNonQuery() #35 #36 Conn.Close() #37 #38 MyGrid.EditItemIndex = -1 #39 OpenDataBase_And_BindToDataGrid() #40 End Sub
42
Update03.aspx – 設定不可修改的欄位
43
DataGrid 所做的修改 Part I <asp:DataGrid runat="server" id="MyGrid"
HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" OnEditCommand="EditData" OnUpdateCommand="UpdateData" OnCancelCommand="CancelEdit" DataKeyField="學號" AutoGenerateColumns="False" >
44
DataGrid 所做的修改 Part II <Columns> <asp:EditCommandColumn
HeaderText="修改" ItemStyle-Wrap="False" EditText="編輯" UpdateText="更新" CancelText="取消" /> <asp:BoundColumn DataField="學號" HeaderText="學號" ReadOnly="True" /> <asp:BoundColumn DataField="姓名" HeaderText="姓名"/> <asp:BoundColumn DataField="國文" HeaderText="國文"/> <asp:BoundColumn DataField="英文" HeaderText="英文"/> <asp:BoundColumn DataField="數學" HeaderText="數學"/> </Columns> </asp:DataGrid>
45
程式所做的修改 更新資料的SQL指令: 「@學號」參數的相關敘述均需刪除:
SQL = "Update 成績單 Set Where Cmd.Parameters.Add( New OleDbType.Integer)) TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox = Val(TB(1).Text)
46
Update04.aspx – 設定 ListBox 及 CheckBox 欄位
47
DataGrid 的安插 EditCommandColumn 欄位。 BoundColumn 欄位 。
HyperLinkColumn 欄位。 TemplateColumn 欄位。
48
TemplateColumn 欄位 安插之語法及結構 (1)
<asp:TemplateColumn HeaderText="抬頭"> <ItemTemplate> 在此安插顯示資料的Server控制元件 </ItemTemplate> <EditItemTemplate> 在此安插編輯資料的Server控制元件 </asp:TemplateColumn> </asp:TemplateColumn>
49
TemplateColumn 欄位 安插之語法及結構 (2)
例如: <asp:TemplateColumn HeaderText="姓名"> <ItemTemplate> <asp:Label runat="server" Text='<%# Container.DataItem("姓名") %>'/> </ItemTemplate> <EditItemTemplate> <asp:TextBox runat="server" id="姓名" Size=10 </EditItemTemplate> </asp:TemplateColumn>
50
TemplateColumn 欄位 安插之語法及結構 (3)
51
Update04.aspx 網頁的欄位(1) 顯示及編輯所使用 Server 控制元件分別如下:
52
Update04.aspx 網頁的欄位(2) 已婚欄位 <asp:TemplateColumn HeaderText="已婚">
<ItemTemplate> <asp:Label runat="server" Text='<%# Container.DataItem("已婚") %>'/> </ItemTemplate> <EditItemTemplate> <asp:CheckBox runat="server" id="已婚" Checked='<%# Container.DataItem("已婚") %>'/> </EditItemTemplate> </asp:TemplateColumn>
53
Update04.aspx 網頁的欄位(3) 性別欄位 <EditItemTemplate>
<asp:ListBox runat="server" id="性別" Rows=1 SelectedIndex='<%# 性別編號(Container.DataItem("性別")) %>'> <asp:ListItem>男</asp:ListItem> <asp:ListItem>女</asp:ListItem> </asp:ListBox> </EditItemTemplate>
54
Update04.aspx 網頁的欄位(4) 血型欄位 <EditItemTemplate>
<asp:ListBox runat="server" id="血型" Rows=1 SelectedIndex='<%# 血型編號(Container.DataItem("血型")) %>'> <asp:ListItem>A</asp:ListItem> <asp:ListItem>B</asp:ListItem> <asp:ListItem>O</asp:ListItem> <asp:ListItem>AB</asp:ListItem> </asp:ListBox> </EditItemTemplate>
55
Update04.aspx 網頁的欄位(5) Function 血型編號( 血型 As String ) As Integer If 血型 = "A" Then Return 0 If 血型 = "B" Then Return 1 If 血型 = "O" Then Return 2 If 血型 = "AB" Then Return 3 End Function
56
Update04.aspx 網頁的欄位(6) Function 性別編號( 性別 As String ) As Integer
If 性別 = "男" Then Return 0 If 性別 = "女" Then Return 1 End Function
57
Update04.aspx 資料的更新(1) Dim Text姓名 As TextBox Text姓名 = e.Item.FindControl("姓名") = Text姓名.Text Dim List性別 As ListBox List性別 = e.Item.FindControl("性別") = List性別.SelectedItem.Text
58
Update04.aspx 資料的更新 (2) Dim List血型 As ListBox
List血型 = e.Item.FindControl("血型") = List血型.SelectedItem.Text Dim Check已婚 As CheckBox Check已婚 = e.Item.FindControl("已婚") = Check已婚.Checked
59
10-3 DataSet 物件與 XML 的讀寫
60
XML 格式的資料庫檔案 (1) Score.xml Part I
<?xml version="1.0" standalone="yes"?> <NewDataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs=" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-TW"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="成績單"> <xs:sequence>
61
XML 格式的資料庫檔案 (2) Score.xml Part II
<xs:element name="學號" type="xs:int" minOccurs="0" /> <xs:element name="姓名" type="xs:string" minOccurs="0" /> <xs:element name="國文" type="xs:short" minOccurs="0" /> <xs:element name="英文" type="xs:short" minOccurs="0" /> <xs:element name="數學" type="xs:short" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:schema>
62
XML 格式的資料庫檔案 (3) Score.xml Part III <成績單>
<學號>850301</學號> <姓名>陳捅一</姓名> <國文>90</國文> <英文>76</英文> <數學>98</數學> </成績單> <學號>850302</學號> <姓名>黃光權</姓名> <國文>58</國文> <英文>77</英文> <數學>75</數學> ...中間資料省略... </NewDataSet>
63
XML 檔案的讀取與產生
64
XmlRead.aspx Part I <%@ Import Namespace="System.Data" %>
<script Language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Dim Ds As New DataSet Ds.ReadXml( Server.MapPath("Score.xml") ) MyGrid.DataSource = Ds.Tables( "成績單" ).DefaultView MyGrid.DataBind() End Sub </script>
65
XmlRead.aspx Part II <Html> <Body BgColor="White">
<H3>XmlRead.aspx -- 讀取 Score.xml 成為「成績單」資料表 <HR></H3> <Center> <Form runat="server"> <asp:DataGrid runat="server" id="MyGrid" HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" /> </Form> <p></Center> <HR></Body> </Html>
66
XmlWrite.aspx Part I <%@ Import Namespace="System.Data" %>
Import Namespace="System.Data.OleDb" %> <script Language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Dim Conn As OleDbConnection Dim Adpt As OleDbDataAdapter Dim Ds As DataSet Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0" Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" ) Conn = New OleDbConnection( Provider & ";" & DataBase ) Conn.Open()
67
PXmlWrite.aspx Part II Dim SQL = "Select * From 成績單"
Adpt = New OleDbDataAdapter( SQL, Conn ) Ds = New Dataset() Adpt.Fill(Ds, "成績單") ' 將 DataSet 物件的內容寫到 Score2.xml 檔案 Ds.WriteXml( Server.MapPath("Score2.xml"), XmlWriteMode.WriteSchema ) Conn.Close() Response.Write( "已經將「成績單」資料表寫到 Score2.xml!" ) End Sub </script>
68
10-4 存取 SQL Server 資料庫
69
轉換提供的資料表 -- 情況一 有安裝附屬於 .NET Framework SDK 的 SQL Server Desktop Engine。
70
轉換提供的資料表--情況二 (1) 安裝有完整的 SQL Server:
開啟 ch10/Sql 目錄,然後逐一修改每一個 .aspx 檔案的以下敘述: Conn = New SqlConnection("server=(local)\NetSDK;" & _ "database=pubs;" & _ "Trusted_Connection=Yes")
71
轉換提供的資料表--情況二 (2) Server 參數 原內容為 (local)\NetSDK,其中 (local) 表示本機、而 NetSDK 為 SQL Server Desktop Engine 安裝時所設定的執行個體名稱。如果您安裝 SQL Server 之後,沒有額外建立新的執行個體,此一參數應設定成 (local),如果有建立新的執行個體,而想採用新的執行個體為資料庫,則將此一參數設定成 (local)\執行個體名稱。
72
轉換提供的資料表--情況二 (3) Trusted_Connection=Yes 將此一參數刪除,然後設定成 user id 及password 參數,其中 user id 參數建議設定成 sa,而 password 參數則設定成 sa 這個帳號的密碼,假設您安裝 SQL Server 時,並沒有額外建立新的執行個體,而 sa 帳號的密碼設定為 “xo123”,則敘述要修改成: Conn = New SqlConnection("server=(local);" & _ "database=pubs;" & _ "user id=sa;password=xo123")
73
從 OleDb 到 SqlClient (1) 將 Import Namespace=“System.Data.OleDb” %> 標示改成: Import Namespace=“System.Data.SqlClient” %>。也就是說,我們原本使用 OleDb 命名空間的物件,現在要改成用 SqlClient 命名空間的物件。
74
從 OleDb 到 SqlClient (2) 將所有以 OleDb 開頭的物件,包含: 改成以 Sql 開頭的物件,如下:
OleDbConnection OleDbCommand OleDbDataReader OleDbDataAdapter … SqlConnection SqlCommand SqlDataReader SqlDataAdapter …
75
從 OleDb 到 SqlClient (3) 將建立 Connection 物件的敘述: 改成:
Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0" Dim Database = "Data Source=" & Server.MapPath( "Sample.mdb" ) Conn = New OleDbConnection( Provider & ";" & DataBase ) Conn.Open() Conn = New SqlConnection("server=(local)\NetSDK;" & _ "database=pubs;" & _ "Trusted_Connection=Yes") Conn.Open
76
Route01.aspx Part I <%@ Import Namespace="System.Data" %>
Import Namespace="System.Data.SqlClient" %> <script Language="VB" runat="server"> Sub Page_Load(sender As Object, e As EventArgs) ' 相關物件的宣告 Dim Conn As SqlConnection ' 宣告一個 Connection 物件 Dim Adpt As SqlDataAdapter ' 宣告一個 DataAdapter 物件 Dim Ds As DataSet ' 宣告一個 DataSet 物件 ' Connection 物件開啟 Sql Server, pub 資料庫 Conn = New SqlConnection("server=(local)\NetSDK;" & _ "database=pubs;" & _ "Trusted_Connection=Yes") Conn.Open()
77
Route01.aspx Part II ' DataAdapter 物件開啟「成績單」資料表
Dim SQL = "Select * From 成績單" Adpt = New SqlDataAdapter( SQL, Conn ) ' 將 DataAdapter 物件所開啟的「成績單」資料表存放於 DataSet 物件中 Ds = New Dataset() Adpt.Fill(Ds, "成績單") ' DataGrid控制元件顯示「成績單」資料表 MyGrid.DataSource = Ds.Tables( "成績單" ).DefaultView MyGrid.DataBind() ' 關閉Sample.mdb資料庫 Conn.Close() End Sub </script>
78
Route01.aspx Part III <Html> <Body BgColor="White">
<H3>資料庫存取路徑一: Connection - DataAdapter - DataSet - DataGrid <HR></H3> <Center> <Form runat="server"> <asp:DataGrid runat="server" id="MyGrid" HeaderStyle-BackColor="#AAAADD" AlternatingItemStyle-BackColor="#FFFFC0" BorderColor="Black" CellPadding="2" CellSpacing="0" /> </Form> <p></Center> <HR></Body> </Html>
79
含有參數的 SQL 指令 Cmd.Parameters.Add( New OleDbType.Integer)) Cmd.Parameters.Add( New OleDbType.Char, 10)) Cmd.Parameters.Add( New OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbType.SmallInt)) Cmd.Parameters.Add( New OleDbType.SmallInt)) 改成 Cmd.Parameters.Add( New SqlDbType.Integer)) Cmd.Parameters.Add( New SqlDbType.Char, 10)) Cmd.Parameters.Add( New SqlDbType.SmallInt)) Cmd.Parameters.Add( New SqlDbType.SmallInt)) Cmd.Parameters.Add( New SqlDbType.SmallInt))
80
SQL Server 不接受沒有具名的 SQL 指令
而 SQL Server 並不接受沒有具名的 SQL 指令,所以一定要先把沒有具名的 SQL 指令改成具名的 SQL 指令,該網頁才能 再轉換成為存取 SQL Server 的網頁。 Insert Into 成績單 (學號, 姓名, 國文, 英文, 數學 ) Values( ?, ?, ?, ?, ?)
81
欄位填入空白的問題 Function 血型編號( 血型 As String ) As Integer
If Trim(血型) = "A" Then Return 0 If Trim(血型) = "B" Then Return 1 If Trim(血型) = "O" Then Return 2 If Trim(血型) = "AB" Then Return 3 End Function
Similar presentations