10 ado n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第 10 章 ADO 與資料庫存取 ( 二 ) PowerPoint Presentation
Download Presentation
第 10 章 ADO 與資料庫存取 ( 二 )

Loading in 2 Seconds...

play fullscreen
1 / 24

第 10 章 ADO 與資料庫存取 ( 二 ) - PowerPoint PPT Presentation


  • 125 Views
  • Uploaded on

第 10 章 ADO 與資料庫存取 ( 二 ). M9153317 朱永方. 本章摘要. 本章介紹將資料庫內容的新增、修改與刪除 10-1 Command 物件與資料的增刪修改 10-2 DataGrid 與資料的修改 10-3 DataSet 物件與 XML 的讀寫 10-4 存取 SQL Server 資料庫. Command 物件與資料的增刪修改. Action Query 指令 能夠寫入資料的指令 刪除資料列: Delete Delete From 成績單 where 數學 = 0 更新資料列: Update

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 10 章 ADO 與資料庫存取 ( 二 )' - cleta


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
本章摘要

本章介紹將資料庫內容的新增、修改與刪除

  • 10-1 Command物件與資料的增刪修改
  • 10-2 DataGrid 與資料的修改
  • 10-3 DataSet 物件與XML的讀寫
  • 10-4 存取SQL Server 資料庫
command
Command物件與資料的增刪修改
  • Action Query指令

能夠寫入資料的指令

    • 刪除資料列:Delete

Delete From 成績單 where 數學 = 0

    • 更新資料列:Update

Update 成績單 Set 數學 = 數學 ^ 0.5 * 10

    • 新增資料列:Insert Into

Insert Into 成績單 (學號,姓名,國文) Values (80030, “小明”, 80)

    • 建立新資料表:Select Into

Select * Into 數學高手 from 成績單 where 數學 >= 90

command1
Command物件與資料的增刪修改
  • 含有參數的SQL指令(P.446)
    • 按下[新增]按鈕時,將輸入資料寫入資料庫中
command2
Command物件與資料的增刪修改
  • 含有參數的SQL指令

建立輸入資料的文字方塊

學號: <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>

command3
Command物件與資料的增刪修改
  • 含有參數的SQL指令

含有參數的SQL指令

SQL = "Insert Into 成績單 (學號, 姓名, 國文, 英文, 數學 ) Values( ?, ?, ?, ?, ?)"

command4
Command物件與資料的增刪修改
  • 含有參數的SQL指令

設定參數資料寫入mdb資料庫時之資料型別

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))

Integer:長整數

Char:字元,數字為字元長度

SmallInt:整數

command5
Command物件與資料的增刪修改
  • 含有參數的SQL指令

使用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)

呼叫Val函數將TextBox資料轉換成數值

command6
Command物件與資料的增刪修改
  • 含有參數的SQL指令--使用具名的參數(p.451)

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))

Cmd.Parameters("@學號").Value = Val(學號.Text)

Cmd.Parameters("@姓名").Value = 姓名.Text

Cmd.Parameters("@國文").Value = Val(國文.Text)

Cmd.Parameters("@英文").Value = Val(英文.Text)

Cmd.Parameters("@數學").Value = Val(數學.Text)

datagrid
DataGrid 與資料的修改
  • DataGrid的安插(p.454)

<Columns>

<asp:EditCommandColumn

HeaderText="修改" ItemStyle-Wrap="False

EditText="編輯" UpdateText="更新" CancelText="取消" />

</Columns>

datagrid1
DataGrid 與資料的修改
  • DataGrid的安插(p.454)

<Columns>

<asp:EditCommandColumn

HeaderText="修改" ItemStyle-Wrap="False

EditText="編輯" UpdateText="更新" CancelText="取消" />

</Columns>

datagrid2
DataGrid 與資料的修改
  • 事件程序編寫(p.456)

OnEditCommand="EditData"

OnUpdateCommand="UpdateData“

OnCancelCommand="CancelEdit“

DataKeyField="學號“

Sub EditData(sender As Object, e As DataGridCommandEventArgs)

MyGrid.EditItemIndex = e.Item.ItemIndex

OpenDataBase_And_BindToDataGrid()

End Sub

Sub CancelEdit(sender As Object, e As DataGridCommandEventArgs)

MyGrid.EditItemIndex = -1

OpenDataBase_And_BindToDataGrid()

End Sub

datagrid3
DataGrid 與資料的修改
  • 事件程序編寫--更新資料(p.462)

OnEditCommand="EditData"

OnUpdateCommand="UpdateData“

OnCancelCommand="CancelEdit“

DataKeyField="學號“

Sub UpdateData(sender As Object, e As DataGridCommandEventArgs)

………

SQL = "Update 成績單 Set 學號=@學號, 姓名=@姓名, 國文=@國文, 英文=@英文, 數學=@數學 Where 學號=@Key"

Cmd = New OleDbCommand( SQL, Conn )

Cmd.Parameters.Add( New OleDbParameter("@學號", OleDbType.Integer))

……..

Dim TB(5) As TextBox

TB(1) = e.Item.Cells(1).Controls(0) ' 學號 TextBox

……..

Cmd.Parameters("@Key").Value = MyGrid.DataKeys(e.Item.ItemIndex)

Cmd.Parameters("@學號").Value = Val(TB(1).Text)

Cmd.Parameters("@姓名").Value = TB(2).Text

…….

Cmd.ExecuteNonQuery()

Conn.Close()

MyGrid.EditItemIndex = -1

OpenDataBase_And_BindToDataGrid()

End Sub

datagrid4
DataGrid 與資料的修改
  • 設定不可修改的欄位(p.464) 將學號欄位設定為不可修改

OnEditCommand="EditData"

OnUpdateCommand="UpdateData"

OnCancelCommand="CancelEdit"

DataKeyField="學號"

AutoGenerateColumns="False" >

<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>

datagrid5
DataGrid 與資料的修改
  • 設定ListBox及CheckBox欄位
    • 使用TemplateColumn欄位

<asp:BoundColumn DataField="姓名" HeaderText="姓名"/>

<asp:TemplateColumn HeaderText="姓名"/>

<ItemTemplate>

<asp:Label runat="server"

Text='<%# Container.DataItem("姓名") %>'/>

</ItemTemplate>

<EditItemTemplate>

<asp:TextBox runat="server" id="姓名" Size=10

Text='<%# Container.DataItem("姓名") %>'/>

</EditItemTemplate>

</asp:TemplateColumn>

datagrid6
DataGrid 與資料的修改
  • 設定ListBox及CheckBox欄位
    • 使用CheckBox ( p.472)

<asp:TemplateColumn HeaderText="已婚">

<ItemTemplate>

<asp:Label runat="server"

Text='<%# Container.DataItem("已婚") %>'/>

</ItemTemplate>

<EditItemTemplate>

<asp:CheckBox runat="server" id="已婚"

Checked='<%# Container.DataItem("已婚") %>'/>

</EditItemTemplate>

</asp:TemplateColumn>

datagrid7
DataGrid 與資料的修改
  • 設定ListBox及CheckBox欄位
    • 使用ListBox ( p.473)

<asp:TemplateColumn HeaderText="性別">

<ItemTemplate>

<asp:Label runat="server"

Text='<%# Container.DataItem("性別") %>'/>

</ItemTemplate>

<EditItemTemplate>

<asp:ListBox runat="server" id="性別" Rows=1

SelectedIndex='<%# 性別編號(Container.DataItem("性別")) %>'>

<asp:ListItem>男</asp:ListItem>

<asp:ListItem>女</asp:ListItem>

</asp:ListBox>

</EditItemTemplate>

</asp:TemplateColumn>

Function 性別編號( 性別 As String ) As Integer

If 性別 = "男" Then Return 0

If 性別 = "女" Then Return 1

End Function

datagrid8
DataGrid 與資料的修改
  • 更新資料庫資料
    • 使用FindControl 找到相關欄位之控制元件( p.474)

Dim Text姓名 As TextBox

Text姓名 = e.Item.FindControl("姓名")

Cmd.Parameters("@姓名").Value = Text姓名.Text

Dim List性別 As ListBox

List性別 = e.Item.FindControl("性別")

Cmd.Parameters("@性別").Value = List性別.SelectedItem.Text

Dim List血型 As ListBox

List血型 = e.Item.FindControl("血型")

Cmd.Parameters("@血型").Value = List血型.SelectedItem.Text

Dim Check已婚 As CheckBox

Check已婚 = e.Item.FindControl("已婚")

Cmd.Parameters("@已婚").Value = Check已婚.Checked

dataset xml
DataSet物件與XML的讀寫
  • XML檔案的讀取( p.481)

使用DataSet物件的ReadXml方法

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

dataset xml1
DataSet物件與XML的讀寫
  • 將mdb資料庫轉換成XML檔案( p.484)

使用DataSet物件的WriteXml方法

Dim SQL = "Select * From 成績單"

Adpt = New OleDbDataAdapter( SQL, Conn )

Ds = New Dataset()

Adpt.Fill(Ds, "成績單")

Ds.WriteXml( Server.MapPath("Score2.xml"), XmlWriteMode.WriteSchema )

sql server
存取SQL Server資料庫
  • 從OleDb到SqlClient
    • 由使用mdb資料庫轉換為使用SQL Server
      • <%@ Import Namespace="System.Data.OleDb" %>

改為

<%@ Import Namespace="System.Data.SqlClient" %>

      • Dim Conn As OleDbConnection

Dim Adpt As OleDbDataAdapter

改為

Dim Conn As SqlConnection

Dim Adpt As SqlDataAdapter

sql server1
存取SQL Server資料庫
  • 從OleDb到SqlClient
    • 由使用mdb資料庫轉換為使用SQL Server
      • 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()

sql server2
存取SQL Server資料庫
  • 從OleDb到SqlClient
    • 由使用mdb資料庫轉換為使用SQL Server
      • Dim SQL = "Select * From 成績單"

Adpt = New OleDbDataAdapter( SQL, Conn )

改為

Dim SQL = "Select * From 成績單"

Adpt = New SqlDataAdapter( SQL, Conn )

sql server3
存取SQL Server資料庫
  • 從OleDb到SqlClient
    • 由使用mdb資料庫轉換為使用SQL Server
      • 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))

改為

Cmd.Parameters.Add( New SqlParameter("@學號", OleDbType.Int))

Cmd.Parameters.Add( New SqlParameter("@姓名", OleDbType.Char, 10))

Cmd.Parameters.Add( New SqlParameter("@國文", OleDbType.SmallInt))

Cmd.Parameters.Add( New SqlParameter("@英文", OleDbType.SmallInt))

Cmd.Parameters.Add( New SqlParameter("@數學", OleDbType.SmallInt))