課程名稱:資料庫系統 授課老師:李春雄 博士

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

第五章 通用网关接口 CGI 简介 Htm l Html + CGI Html + asp 网页可以处理动态的信息.
ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#
題目:徽章之記憶 南台科技大學 機械系 車輛一乙 學號:4A 姓名:黃冠嘉 教師:謝慶存
主讲:史治平 地址:四川电大计算机教研室 电话:
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
計算機程式及實習 期末報告 題目:商店結帳系統
Demo-dataSource與DropDownList
第13章 数据库的基本应用 Visual Basic 程序设计教程.
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
第7章利用ADO.NET 进行数据访问.
課程名稱:程式設計 授課老師:________
ASP.NET 網頁製作教本 – 從基本語法學起
ADO .NET 簡介.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
Access数据库程序设计 总复习.
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
課程名稱:程式設計 授課老師:________
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
CH10.
BLANK overview.
第七章、RFID WinCE系統開發 本章針對RFID系統中的行動裝置架構開發方式進行介紹,這裡所指的行動裝置指的是使用Windows Mobile作業系統的個人數位助理PDA或是手機而言,本章內之範例可以在此平台上運作無虞。主要說明使用VS.NET 2008平台開發與RFID結合的Windows.
CH11.
資料庫程式設計 VB資料庫設計簡介 週次:4 建國科技大學 資管系 饒瑞佶.
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
課程名稱:程式設計 授課老師:________
課程名稱:資料庫系統 授課老師:李春雄 博士
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
程式語言 -Visual Basic 變數、常數與資料型態.
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
ASP.NET 網頁製作教本 – 從基本語法學起
ADO.NET.
課程名稱:資料庫系統 授課老師:李春雄 博士
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
第6章 ADO.NET数据访问接口 6.
上述代码规范了 INSERT 语句的编写规范,其中:
第2章 ADO.NET 2.0概述.
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 ADO.NET操作SQL Server数据库
ASP.NET 網頁製作教本 – 從基本語法學起
第9章 事务.
5.1.1 使用 ExecuteReader()操作数据库
课程设计 归纳总结 4 知识目标 1 讲授新课 2 任务操作 3 布置作业 5.
第4章 程序控制结构与算法基础.
操作数据库 C#程序设计课程组.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
機器人-Robot Nobody 機器人.
第12章 VBA模块设计.
PCR300 (13.56MHz) Reader RS232/USB.
Ch03 基本輸出入介面設計 視窗程式設計 授課教師:王大瑾.
C# 程序设计教程 同济大学计算机系基础学科组
Connection对象 访问数据库的第一步是建立连接,只有建立连接,才可能实现 在数据库和应用程序之间移动数据。 ADO提供了连接对象:
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
Visual Basic.NET 程序设计语言课程内容
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第五讲 酒店客房管理系统(一) 教育部“十二五”职业教育国家规划教材
VB2005 DataBase Manipulation Command for Access
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
SQL Server Mobile 2005 程序开发(三)
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第 10 章 ADO.NET與XML.
第二章、第三章错题分析.
Controls.
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
DEV342 Visual Basic 2005: 应用程序框架 和高级语言特性
VB与数据库 数据库连接与查询.
再戰DataSet.
C#快速導讀 流程控制.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

課程名稱:資料庫系統 授課老師:李春雄 博士 第九章 資料庫與程式語言整合 課程名稱:資料庫系統 授課老師:李春雄 博士

本章學習目標 1.讓讀者瞭解「資料庫系統」與「應用程式」之 間的關係。 2.讓讀者瞭解ADO.NET的架構及運作原理。 存取方法。

本章內容 9-1何謂資料庫應用系統? 9-2 ADO.NET的簡介 9-3 命名空間的引用 9-4 資料庫與VB2010整合

9-1 何謂資料庫應用系統? 在前面幾個章節中,已經學會如何將使用者的需求繪製成ER圖(邏輯設計),進而轉換成真正可以儲存資料的資料表(實體設計),其目的就是建立一個降低資料重覆、避免資料異常的資料庫操作環境,進而才能確保資料的一致性、完整性,以達到資料共享(Data Sharing)的目的。

9-1 何謂資料庫應用系統?<續> 9-1 何謂資料庫應用系統?<續> 既然,資料庫以共享為目的,那就必須要透過應用程式來讀取「使用者的需求條件」,送到資料庫理管系統來處理,並將查詢結果回傳到個別使用者的畫面,此系統稱為「資料庫應用系統」。 (應用程式) 在上圖中,「應用程式」是指利用ASP, JSP,ADO.NET等網頁開發程式,透過T-SQL指令來存取資料庫中的資料。它會依照使用者的需求來進行查詢,並將查詢結果回傳給使用者。 圖9-1 資料庫應用系統

9-2 ADO.NET的簡介 ADO.NET(ActiveX Data Object.NET)可以說是微軟公司最新一代的「資料庫存取架構」,它是專門用來存.NET平台上後端資料庫,它不但比以前的ADO功能還要強大。原因是ADO.NET中包括了五個主要物件,分別為: 1.Connection物件 2.Command物件 3.DataAdapter物件 4.DataSet物件 5.DataReader物件 這些物件是以物件導向的設計方式並且它對分散式資料存取提供了多項功能。

9-2 ADO.NET的簡介<續> 此外,ADO.NET為了因應不同的網際網路的資料交換。因此,也採用企業界標準的XML格式,所以,在往後對於網路上的異質性資料庫也有直接整合的功能及物件。

9-2.1 ADO.NET的角色 ADO.NET是程式語言與資料庫之間的溝通橋樑。因此,我們可以利用VB2010、C#2010、ASP.NET 3.5及J#等程式語言來撰寫應用程式,再透過ADO.NET就可以輕易的存取資料庫的資料了。如圖9-2所示: 2018/11/27 圖9-2 ADO .NET的角色

9-2.2 ADO.NET的架構圖 在圖9-3 ADO .NET 架構圖中,我們可以很清楚的了解ADO.NET 的資料存取方式主要有兩種方式: 第一種是利用DataSet來存取資料庫中的資料。 第二種則是直接經由DataReader來存取資料庫中的資料。 2018/11/27

1. Connection:用來建立與資料庫之間的連接。 說明: 1. Connection:用來建立與資料庫之間的連接。 2. Command:用來對資料庫執行SQL命令,SQL命令包括Insert, Update,Delete, Select等。 3. DataReader:以唯讀方式從資料來源讀取順向資料流,提供程式存取資料的介面。 2018/11/27

4. DataAdapter:表示SQL命令集和資料庫連接,使用資料來源填入 DataSet並更新資料。DataAdapter物件所提供的四個Command物件(包括:SelectCommand, InsertCommand, UpdateComman 及DeleteCommand)來進行資料的存取。 2018/11/27

5. DataSet:可以讀資料庫的內容載入記憶體中,在記憶體中建立一個或多個資料表,提供程式存取資料,其缺點就是會佔用較多的記憶體空間,因此,導致系統負荷較大。而優點則是資料處理上比較有彈性。 2018/11/27

首先ADO.NET透過Connection物件與資料庫進行連接,接下來說明兩種方式的不同之處: 一、第一種方式: 利用DataReader來存取資料庫中的資料,其運作流程如下所示: 說明: 利用Command物件來存取資料庫,並且透過DataReader物件來讀取資料,最後再利用TextBox, Msgbox …物件顯示資料內容,而此種方法與讀者以前學過的RecordSet觀念相同,比較簡易,容易學習並且讀取,但是資料是唯讀的查詢方式,無法直接的修改,並且程式碼比較多。 2018/11/27

利用DataSet來存取資料庫中的資料,其運作流程如下所示: 二、第二種方式: 利用DataSet來存取資料庫中的資料,其運作流程如下所示: 說明: 我們可以利用DataAdapter物件的Fill方法來將資料庫中的資料暫時放到DataSet物件中。 程式如下所示:DataAdapter.Fill(DataSet, "學生資料表") 2018/11/27

除此之外,利用此種方法,可以透過DataAdapter物件來下達各項SQL語法,並且將資料查詢的結果存放到離線的DataSet物件中,因此,DataAdapter物件在此扮演的角色便是資料庫與DataSet物件之間重要的溝通媒介,並且DataSet還可以進行離線資料修改,因此,可以降低資料庫管理系統的連線負擔。 2018/11/27

9-3 命名空間的引用 .NET Framework是個物件導向的系統,因此,當開發人員要使用VB2010來呼叫系統底層的類別時,必須先將類別的命名空間(namespace)引用(匯入)進來。若要使用到ADO.NET,則必須將System.Data命名空間引用進來,此一命名空間定義了建構ADO.NET架構的基礎類別。 2018/11/27

9-3.1 如何引用ADO.NET命名空間 如果我們要利用VB2010來存取資料庫時,必須要用到ADO.NET物件,而如何使用ADO.NET內的物件呢?非常簡單,您只要在撰寫程式前面先引用(Imports)ADO.NET的命名空間(Namespace) 。 ◆引用(Imports)ADO.NET的命名空間(Namespace)的方法: Imports 命名空間的物件名稱 2018/11/27

而在ADO. NET中的命名空間的物件名稱有非常多,諸如:System. Data, System. Data. OleDb, System 而在ADO.NET中的命名空間的物件名稱有非常多,諸如:System.Data, System.Data.OleDb, System.Data.SqlClient, System.Data.IO, System.Data.XML等等,而我們在撰寫程式時,怎麼知道要引用那一個命名空間的物件呢?因此,我們就必須要了解在什麼時候引用那一個命名空間才可以存取到資料庫中的資料。 2018/11/27

現在我們歸納一般常用的引用的撰寫方法如下: 一、引用System.Data.OleDb命名空間 (適用Access、Excel、FoxPro資料庫) Imports System.Data Imports System.Data.OleDb 說明:表示要引用ADO.NET基礎物件以及引用OLE DB資料來源的物件。 2018/11/27

二、若您要連結的資料庫來源是SQL Server 7.0以上版本,則您必須將 System.Data.Oledb改成System.Data.SqlClient這個命名空間 Imports System.Data Imports System.Data.SqlClient 說明:表示要引用ADO.NET基礎物件以及引用SQL Server資料來源的 物件。 2018/11/27

9-3.2 使用Connection物件與 資料庫連結 想要利用ADO.NET來存取資料庫,就必須要先建立物件與資料庫連結,其最主要的工作是透過Connection物件了。 而ADO.NET所提供的Connection物件,可以分為兩種連結方式: 第一種:是指OleDbConnection物件,它是專門用來連結資料庫為 Access、Excel、Dbase時最適合,但是在使用前必須要先 引用System.Data.OleDb的命名空間。 2018/11/27

第二種:是指SqlConnection物件,它是微軟專門針對SQL Server7.0 資料庫以上版本量身定作了它自己的物件,所 要先引用 System.Data.SqlClient的命名空間。 2018/11/27

9-4 資料庫與VB整合 在本單元中,將介紹如何利用VB程式語言來連接後端的資料庫系統,並且將後端的資料庫透過DataReader物件或DataSet物件來讀取資料,最後再利用TextBox, Msgbox …物件或DataGridView等物件來顯示資料內容。 2018/11/27

9-4.1 Access2010資料庫與VB2010連結 一、VB2010與Access資料庫標準連結方式, 其步驟如下: 1.步驟一:引用命名空間 Imports System.Data Imports System.Data.OleDb 2018/11/27

2.步驟二:設定資料庫名稱與路徑< Access2010 / Access2007> 3.步驟三:宣告及建立Connection物件 4.步驟四:使用Open方法來開啟資料庫 5.步驟五:使用Close方法來關閉資料庫 Dim dbpath As String = "DBMS.accdb" '宣告資料庫所在的路徑變數 Dim Source As String '宣告連線的字串 Source = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbpath Dim dbpath As String = "DBMS.mdb" '宣告資料庫所在的路徑變數 Dim Source As String '宣告連線的字串 Source = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath Dim conn As OleDbConnection '宣告連線的物件 conn = New OleDbConnection(Source) '連線 conn.Open() '開啟資料庫 conn.Close() '關閉資料庫 2018/11/27

二、 VB2010連結Access資料庫之測試程式 程式檔案名稱 Ch9-4.1.sln 01 02 03 04 05 06 07 08 09 10 11 12 13 14 Imports System.Data Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(……) Handles Button1.Click Dim dbpath As String = "DBMS.accdb" '宣告資料庫所在的路徑變數 Dim Source As String '宣告連線的字串 Source = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbpath Dim conn As OleDbConnection '宣告連線的物件 conn = New OleDbConnection(Source) '連線 conn.Open() '開啟資料庫 MsgBox("成功連結到Access資料庫") conn.Close() '關閉資料庫 End Sub End Class 2018/11/27

9-4.2 使用DataReader物件 讀取資料庫的資料 當我們利用OleDbConnection來連接資料庫之後,接下來我們就可以再利用ADO.NET物件中的DataReader物件來取得資料庫中的資料,並將查詢的資料顯示於表單上,而DataReader物件只能逐筆由開頭循序的讀取資料庫中的資料,而且讀出的資料是「唯讀」狀態,因此,不能再進行其他的操作。其程式流程如下: 2018/11/27

一、 Command物件   建立資料庫的連結並且開啟資料庫之後,我們必須利用Command 物件來撰寫SQL指令才能操作資料庫的四個動作,包括了Insert(新增)、Delect(刪除)、Update(修改)及Select(查詢)。 在ADO.NET所提供的Command物件,有兩種執行SQL語法的方法: 第一種:透過Command物件的ExecuteNonQuery方法,可以「新 增」、「修改」「刪除」資料庫中的資料。 第二種:是透過Command物件的ExecuteReader方法將「查詢」結 果的 DataReader物件傳回。 2018/11/27

二、 DataReader物件 我們利用OleDbCommand執行SQL指令之後,尚無法顯示執行的結果,因此,我們就必須將其設定給DataReader物件,並且再利用Command物件的ExecuteReader方法來執行,因此,爾後要讀取資料時,必須以OledbDataReader的Read方法來取得資料。 2018/11/27

(一)VB2010與Access資料庫的撰寫方法 使用OleDbCommand、OleDbDataReader物件(適用Access資料庫)其步驟如下: 2018/11/27

2018/11/27

(二)DataReader的方法與屬性一覽表 2018/11/27

1.Read()方法 利用DataReader物件來「讀取資料庫中第一筆記錄」如果讀到記錄時,則傳回True,否則傳回False。當資料記錄有兩筆或兩筆以上時,那我們如何讀取全部的記錄呢?非常簡單我們只要在程式片段中利用While--- End While 與For…Next迴圈即可顯示所有的資料。 2018/11/27

如果所要讀取的欄位資料是循序的,則利用for/next迴圈的方法是最佳方式,但是,如果要顯示的欄位資料並非是循序的,則必須要利用直接指定法來直接在Item屬性中輸入欄位名稱。 2018/11/27

完整的程式碼:ch9-4.2A.sln Dim dbpath As String = "DBMS.accdb" '宣告資料庫所在的路徑變數 Dim Source As String '宣告連線的字串 Source = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbpath Dim conn As OleDbConnection '宣告連線的物件 conn = New OleDbConnection(Source) '連線 conn.Open() '開啟資料庫 Dim SelectCmd As String Dim i As Integer SelectCmd = "select * from 學生資料表" Dim Cmd As OleDbCommand = New OleDbCommand(SelectCmd, conn) Dim reader As OleDbDataReader reader = Cmd.ExecuteReader() '顯示資料表欄位的所有資料 While reader.Read() For i = 0 To reader.FieldCount - 1 TextBox1.Text &= reader.Item(i) & vbTab Next i TextBox1.Text &= vbNewLine End While conn.Close() '關閉資料庫 2018/11/27

顯示結果: 完整的程式碼:ch9-4.2A.sln 2018/11/27

如果利用直接指定法來直接在Item屬性中輸入欄位名稱。則以上行號18~23則必須改為以下程式即可。 While reader.Read() TextBox1.Text &= reader.Item("學號") & vbTab TextBox1.Text &= reader.Item("姓名") & vbTab TextBox1.Text &= reader.Item("系碼") & vbTab TextBox1.Text &= vbNewLine End While 2018/11/27

2.GetName(i)方法 完成上面的程式碼之後,您是否會發現只會顯示出所有的記錄,但是卻無法即時的了解到每一筆記錄中每一個欄位所代表的意義呢?因此,我們就必須要把每一筆記錄的每一個欄位名稱顯示出來,當作抬頭名稱。 2018/11/27

Dim SelectCmd As String Dim i As Integer ..................... …… Dim SelectCmd As String Dim i As Integer SelectCmd = "select * from 學生資料表" Dim Cmd As OleDbCommand = New OleDbCommand(SelectCmd, conn) Dim reader As OleDbDataReader reader = Cmd.ExecuteReader() '顯示資料表欄位名稱 For i = 0 To reader.FieldCount - 1 TextBox1.Text &= reader.GetName(i) & vbTab Next i TextBox1.Text &= vbNewLine '顯示資料表欄位的所有資料 While reader.Read() TextBox1.Text &= reader.Item(i) & vbTab End While conn.Close() '關閉資料庫 2018/11/27

顯示結果: 完整的程式碼:ch9-4.2B.sln 2018/11/27

9-4.3 使用DataSet物件來讀取資料 DataSet物件是System.Data命名空間的重要物件,其主要的功能是取得資料庫中的資料之後,再顯示在瀏覽器上。但是DataSet物件本身並沒有存取資料庫的能力,因此它需要依賴其它的物件(例如OleDbConnection物件、OleDbCommand物件或是OldDbDataAdapter物件)提供資料給它。其中以「OldDbDataAdapter」物件跟DataSet之間的關係最為密切。 其程式流程如下: 2018/11/27

連結DataAdapter物件的步驟 步驟一:宣告並建立DataSet與DataAdapter兩個物件 步驟二:再利用DataAdapter物件直接執行的SQL語法 步驟三:最後使用DataAdapter物件的Fill方法將查詢資料的結果放到 DataSet物件中。 2018/11/27

完整的程式碼:ch9-4.3A.sln Dim dbpath As String = "DBMS.accdb" '宣告資料庫所在的路徑變數 Dim Source As String '宣告連線的字串 Source = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbpath Dim conn As OleDbConnection '宣告連線的物件 conn = New OleDbConnection(Source) '連線 conn.Open() '開啟資料庫 ' 開啟資料庫 Dim SelectCmd As String SelectCmd = “select 學號,姓名,系名from 學生資料表,科系代碼資料表 where 學生資料表.系碼 =科系代碼資料表.系碼" '宣告物件 Dim DtApter As OleDbDataAdapter Dim DtSet As DataSet DtApter = New OleDbDataAdapter(SelectCmd, conn) DtSet = New DataSet '讀取資料表 DtApter.Fill(DtSet, "學生資料表") DataGridView1.DataSource = DtSet.Tables("學生資料表") conn.Close() ' 關閉資料庫 2018/11/27

顯示結果 完整的程式碼:ch9-4.3A.sln 2018/11/27