




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 vb.net程序設(shè)計教程程序設(shè)計教程1 1第第1111章章 數(shù)據(jù)庫應(yīng)用程序開發(fā)數(shù)據(jù)庫應(yīng)用程序開發(fā)11.1 數(shù)據(jù)庫概述數(shù)據(jù)庫概述11.2 ado數(shù)據(jù)控件數(shù)據(jù)控件 11.3 記錄集對象記錄集對象recordset 11.4 使用使用sql查詢數(shù)據(jù)庫查詢數(shù)據(jù)庫11.5 報表制作報表制作 11.6 綜合應(yīng)用綜合應(yīng)用 vb.net程序設(shè)計教程程序設(shè)計教程2 211.1 11.1 數(shù)據(jù)庫概述數(shù)據(jù)庫概述數(shù)據(jù)庫數(shù)據(jù)庫 以一定的組織方式將相關(guān)的數(shù)據(jù)組織在以一定的組織方式將相關(guān)的數(shù)據(jù)組織在一起,存放在計算機外存儲器,能為多個用戶一起,存放在計算機外存儲器,能為多個用戶共享,與應(yīng)用程序彼此獨立的一組數(shù)據(jù)的集合。共
2、享,與應(yīng)用程序彼此獨立的一組數(shù)據(jù)的集合。visual basic支持多種類型的數(shù)據(jù)庫,如支持多種類型的數(shù)據(jù)庫,如access數(shù)據(jù)庫、數(shù)據(jù)庫、foxpro數(shù)據(jù)庫、數(shù)據(jù)庫、microsoft excel、sql server和和oracle等。等。 vb.net程序設(shè)計教程程序設(shè)計教程3 3.1關(guān)系型數(shù)據(jù)庫模型 關(guān)系型數(shù)據(jù)庫模型將數(shù)據(jù)用表的集合來表示。通關(guān)系型數(shù)據(jù)庫模型將數(shù)據(jù)用表的集合來表示。通過建立簡單表之間的關(guān)系來定義結(jié)構(gòu),而不是根過建立簡單表之間的關(guān)系來定義結(jié)構(gòu),而不是根據(jù)數(shù)據(jù)的物理存儲方式建立數(shù)據(jù)中的關(guān)系。不管據(jù)數(shù)據(jù)的物理存儲方式建立數(shù)據(jù)中的關(guān)系。不管表在數(shù)據(jù)庫文件中的
3、物理存儲方式如何,都可以表在數(shù)據(jù)庫文件中的物理存儲方式如何,都可以把它看作一組行和列。把它看作一組行和列。數(shù)據(jù)庫表 vb.net程序設(shè)計教程程序設(shè)計教程4 4關(guān)系型數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫 表是有關(guān)信息的邏輯組,行被稱為記錄,列則被稱表是有關(guān)信息的邏輯組,行被稱為記錄,列則被稱為字段。為字段。主鍵主鍵記錄記錄字段字段 vb.net程序設(shè)計教程程序設(shè)計教程5 511.1.2 使用使用sql查詢數(shù)據(jù)庫查詢數(shù)據(jù)庫結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言(structure query language,sqlsql)是操作關(guān)系數(shù)據(jù)庫的工業(yè)標準語言。通過是操作關(guān)系數(shù)據(jù)庫的工業(yè)標準語言。通過sql命令,可以從數(shù)據(jù)庫的多個
4、表中獲取數(shù)據(jù),命令,可以從數(shù)據(jù)庫的多個表中獲取數(shù)據(jù),也可對數(shù)據(jù)進行更新操作。也可對數(shù)據(jù)進行更新操作。sql的主要語句:的主要語句:從數(shù)據(jù)庫中刪除一個表從數(shù)據(jù)庫中刪除一個表數(shù)據(jù)定義數(shù)據(jù)定義drup在數(shù)據(jù)庫中建立一個新表在數(shù)據(jù)庫中建立一個新表數(shù)據(jù)定義數(shù)據(jù)定義create用來改變特定記錄和字段的值用來改變特定記錄和字段的值數(shù)據(jù)操作數(shù)據(jù)操作update向表中插入一條記錄向表中插入一條記錄數(shù)據(jù)操作數(shù)據(jù)操作insert從數(shù)據(jù)表中刪除記錄從數(shù)據(jù)表中刪除記錄數(shù)據(jù)操作數(shù)據(jù)操作delete在數(shù)據(jù)庫中查找滿足特定條件的記錄在數(shù)據(jù)庫中查找滿足特定條件的記錄數(shù)據(jù)查詢數(shù)據(jù)查詢select描描 述述分類分類命命 令令. v
5、b.net程序設(shè)計教程程序設(shè)計教程6 6selectselect語句語句 1select語句的基本語法形式語句的基本語法形式 select select 目標表達式列表目標表達式列表 from from 表名表名 where where 查詢條件查詢條件 group by group by 分組字段分組字段 having having 分組條件分組條件 order by order by 排序關(guān)鍵字段排序關(guān)鍵字段 asc|descasc|desc 它包含它包含4部分,其中部分,其中select和和from子句是子句是必須的必須的,通,通過使用過使用select語句返回一個記錄集。語句返回一個記
6、錄集。 例例 在學(xué)生基本情況表中查詢物理系的學(xué)生情況:在學(xué)生基本情況表中查詢物理系的學(xué)生情況:select select * * from from 基本情況基本情況 wherewhere專業(yè)專業(yè)= = 物理物理 vb.net程序設(shè)計教程程序設(shè)計教程7 7selectselect語句語句- -輸出表達式輸出表達式目標表達式為查詢結(jié)果要顯示的字段清單目標表達式為查詢結(jié)果要顯示的字段清單(字段字段間用逗號分開間用逗號分開)。數(shù)據(jù)的顯示順序由字段清單的。數(shù)據(jù)的顯示順序由字段清單的順序決定。順序決定。 可用星號可用星號*代表所有字段;代表所有字段; 可用可用as短語指定字段別名;短語指定字段別名; 可
7、通過構(gòu)造表達式對原始數(shù)據(jù)進行復(fù)雜的運算可通過構(gòu)造表達式對原始數(shù)據(jù)進行復(fù)雜的運算處理,產(chǎn)生查詢結(jié)果。處理,產(chǎn)生查詢結(jié)果。例如,例如,根據(jù)出生年月計算每個學(xué)生的年齡根據(jù)出生年月計算每個學(xué)生的年齡select 姓名姓名, (year(date()-year(出生年月出生年月) as 年齡年齡 from 基本情況基本情況 vb.net程序設(shè)計教程程序設(shè)計教程8 8selectselect語句語句- -查詢條件查詢條件wherewhere子句用于限制記錄的選擇子句用于限制記錄的選擇例如例如,查詢,查詢1985-01-01到到1986-12-31之間出生的學(xué)生:之間出生的學(xué)生:select * from
8、基本情況基本情況 where 出生年月出生年月 between #1985-01-01# and #1986-12-31#要枚舉出若干項進行查詢,使用運算符要枚舉出若干項進行查詢,使用運算符in例如例如,查詢物理系和數(shù)學(xué)系的學(xué)生數(shù)據(jù):,查詢物理系和數(shù)學(xué)系的學(xué)生數(shù)據(jù):select * from 基本情況基本情況 where 專業(yè)專業(yè) in (物理物理, 數(shù)學(xué)數(shù)學(xué)) 等價于:等價于:select * from 基本情況基本情況 where專業(yè)專業(yè)= 物理物理 or 專業(yè)專業(yè) = 數(shù)學(xué)數(shù)學(xué) vb.net程序設(shè)計教程程序設(shè)計教程9 9selectselect語句語句- -合計函數(shù)合計函數(shù)合計函數(shù)用于對
9、記錄集進行統(tǒng)計合計函數(shù)用于對記錄集進行統(tǒng)計返回指定字段中的最小值返回指定字段中的最小值minmin返回指定字段中的最大值返回指定字段中的最大值maxmax返回特定字段中所有值的總和返回特定字段中所有值的總和sumsum返回選定記錄的個數(shù)返回選定記錄的個數(shù)countcount獲得特定字段中的值的平均數(shù)獲得特定字段中的值的平均數(shù)avgavg描描 述述合計函數(shù)合計函數(shù)例如,統(tǒng)計物理系學(xué)生的人數(shù):例如,統(tǒng)計物理系學(xué)生的人數(shù):select count(*) as 學(xué)生人數(shù)學(xué)生人數(shù) from 基本情況基本情況 where專業(yè)專業(yè)= “物理物理”count(count(* *) ) 在統(tǒng)計時包含值為空值的記
10、錄在統(tǒng)計時包含值為空值的記錄count(count(表達式表達式) ) 統(tǒng)計時忽略表達式值為空值的記錄統(tǒng)計時忽略表達式值為空值的記錄 vb.net程序設(shè)計教程程序設(shè)計教程1010selectselect語句語句- -分組分組group by子句將指定字段列表中有相同值的子句將指定字段列表中有相同值的記錄合并成一條記錄。記錄合并成一條記錄。例如,例如,計算每個學(xué)生各門課程平均分:計算每個學(xué)生各門課程平均分:select 學(xué)號學(xué)號, avg(成績成績) as 平均分平均分from 成績表成績表 group by 學(xué)號學(xué)號要對分組后的數(shù)據(jù)進行過濾,可在要對分組后的數(shù)據(jù)進行過濾,可在group by子
11、句后結(jié)合子句后結(jié)合having子句在分組中選擇。子句在分組中選擇。例如,例如,查詢平均分在查詢平均分在8080分以上的學(xué)生:分以上的學(xué)生:select 學(xué)號學(xué)號, avg(成績成績) as 平均分平均分from 成績表成績表 group by 學(xué)號學(xué)號having avg(成績成績)=80 vb.net程序設(shè)計教程程序設(shè)計教程1111selectselect語句語句- -排序排序order by子句決定了查詢結(jié)果的排列順序子句決定了查詢結(jié)果的排列順序在在order by子句中,可以指定一個或多個字子句中,可以指定一個或多個字段作為排序關(guān)鍵字,段作為排序關(guān)鍵字,asc選項代表升序,選項代表升序,
12、desc代表降序。代表降序。 vb.net程序設(shè)計教程程序設(shè)計教程1212selectselect語句語句- -多表連接多表連接若查詢的數(shù)據(jù)分布在多個表中,則必須建立連接若查詢的數(shù)據(jù)分布在多個表中,則必須建立連接查詢:查詢:select目標表達式列表目標表達式列表 from 表表1, 表表2 where 表表1.字段字段 = 表表2.字段字段例如,學(xué)生成績表中只有學(xué)號,如何在查看學(xué)生例如,學(xué)生成績表中只有學(xué)號,如何在查看學(xué)生成績的同時能夠直觀地看到學(xué)生姓名?這就要在成績的同時能夠直觀地看到學(xué)生姓名?這就要在兩表之間建立連接。兩表之間建立連接。sql語句如下:語句如下:select基本情況基本情
13、況.姓名姓名, 成績表成績表.* from 基本情基本情況況, 成績表成績表 where成績表成績表.學(xué)號學(xué)號=基本情況基本情況.學(xué)號學(xué)號 vb.net程序設(shè)計教程程序設(shè)計教程1313vb.net數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 11.2.1 vb.net數(shù)據(jù)庫訪問過程數(shù)據(jù)庫訪問過程 數(shù)據(jù)庫應(yīng)用程序引例數(shù)據(jù)庫應(yīng)用程序引例例例11.1 設(shè)計一個窗體,用設(shè)計一個窗體,用datagrid控件顯示控件顯示student.mdb數(shù)據(jù)庫中數(shù)據(jù)庫中“基本情況基本情況”表的內(nèi)表的內(nèi)容。容。 vb.net程序設(shè)計教程程序設(shè)計教程141411.2.1 數(shù)據(jù)庫訪問過程數(shù)據(jù)庫訪問過程 vb.net采用采用ado(activex
14、data objects)數(shù)據(jù)數(shù)據(jù)訪問技術(shù),編寫本程序,需要完成以下工作:訪問技術(shù),編寫本程序,需要完成以下工作: 界面設(shè)計界面設(shè)計 在窗體上添加在窗體上添加datagrid控件控件 創(chuàng)建對象連接創(chuàng)建對象連接 綁定數(shù)據(jù)到綁定數(shù)據(jù)到datagrid控件使其能顯示在窗體控件使其能顯示在窗體上。上。 程序代碼程序代碼 vb.net程序設(shè)計教程程序設(shè)計教程1515 vb.net vb.net數(shù)據(jù)庫訪問過程數(shù)據(jù)庫訪問過程 應(yīng)用程序通過連接對象與服務(wù)器上的數(shù)據(jù)源應(yīng)用程序通過連接對象與服務(wù)器上的數(shù)據(jù)源建立連接建立連接( (不同類型的數(shù)據(jù)庫使用各自的連接提不同類型的數(shù)據(jù)庫使用各自的連接提供程序供程序) ) v
15、b.net程序設(shè)計教程程序設(shè)計教程1616 數(shù)據(jù)訪問過程數(shù)據(jù)訪問過程 命令對象發(fā)出命令對象發(fā)出sql命令從數(shù)據(jù)源中獲取數(shù)據(jù)命令從數(shù)據(jù)源中獲取數(shù)據(jù) 數(shù)據(jù)集對象用來保存所查詢到的數(shù)據(jù)記錄數(shù)據(jù)集對象用來保存所查詢到的數(shù)據(jù)記錄 數(shù)據(jù)適配器用于在數(shù)據(jù)源和數(shù)據(jù)集之間交換數(shù)據(jù)適配器用于在數(shù)據(jù)源和數(shù)據(jù)集之間交換數(shù)據(jù)。數(shù)據(jù)。 當(dāng)數(shù)據(jù)傳輸?shù)疆?dāng)數(shù)據(jù)傳輸?shù)娇蛻舳撕螅蛻舳撕?,ado.net斷開與斷開與數(shù)數(shù)據(jù)源的連接,應(yīng)用程序據(jù)源的連接,應(yīng)用程序離線工作離線工作如果如果應(yīng)用程序改變了數(shù)據(jù)集的內(nèi)容應(yīng)用程序改變了數(shù)據(jù)集的內(nèi)容,通過重新,通過重新連接來提交變化連接來提交變化。 vb.net程序設(shè)計教程程序設(shè)計教程1717數(shù)據(jù)
16、集數(shù)據(jù)集 數(shù)據(jù)集是一個容器,一個數(shù)據(jù)集可以包含多張數(shù)數(shù)據(jù)集是一個容器,一個數(shù)據(jù)集可以包含多張數(shù)據(jù)表及數(shù)據(jù)表之間的關(guān)系,這些表可以來自多個據(jù)表及數(shù)據(jù)表之間的關(guān)系,這些表可以來自多個數(shù)據(jù)庫或電子表格之類的非數(shù)據(jù)庫源。一旦數(shù)據(jù)數(shù)據(jù)庫或電子表格之類的非數(shù)據(jù)庫源。一旦數(shù)據(jù)在數(shù)據(jù)集內(nèi),則不管它的原始源是什么,都可以在數(shù)據(jù)集內(nèi),則不管它的原始源是什么,都可以使用一致的對象模型對它進行操作。使用一致的對象模型對它進行操作。在在 ado.net 中,數(shù)據(jù)傳輸?shù)母袷绞侵校瑪?shù)據(jù)傳輸?shù)母袷绞?xml,是,是基于文本的標準格式,不使用二進制信息,它可基于文本的標準格式,不使用二進制信息,它可以通過任何協(xié)議發(fā)送。以通過任
17、何協(xié)議發(fā)送。ado.net 自動根據(jù)需要自動根據(jù)需要將數(shù)據(jù)轉(zhuǎn)換為將數(shù)據(jù)轉(zhuǎn)換為 xml 或從或從 xml 轉(zhuǎn)換出數(shù)據(jù),而轉(zhuǎn)換出數(shù)據(jù),而用戶不必知道用戶不必知道 xml 。 vb.net程序設(shè)計教程程序設(shè)計教程181811.2.2 使用數(shù)據(jù)控件訪問數(shù)據(jù)庫使用數(shù)據(jù)控件訪問數(shù)據(jù)庫 ado.net數(shù)據(jù)控件對象有數(shù)據(jù)控件對象有4套:套: 用于用于 sql server 7.0(以以sql為為前導(dǎo)名前導(dǎo)名) 用于用于oracle數(shù)據(jù)庫數(shù)據(jù)庫(以以orc為前為前導(dǎo)名導(dǎo)名)用于用于odbc 數(shù)據(jù)源數(shù)據(jù)源(以以odbc為為前導(dǎo)名前導(dǎo)名)用于用于ole db 接口的數(shù)據(jù)庫接口的數(shù)據(jù)庫(以以oledb為前導(dǎo)名為前導(dǎo)名
18、) vb.net程序設(shè)計教程程序設(shè)計教程1919使用使用oledboledb數(shù)據(jù)控件數(shù)據(jù)控件oledb數(shù)據(jù)控件對象是一個通用對象,可訪問目數(shù)據(jù)控件對象是一個通用對象,可訪問目前流行的數(shù)據(jù)庫系統(tǒng)前流行的數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)對象名稱數(shù)據(jù)對象名稱功能描述功能描述oledbconnection建立一個與數(shù)據(jù)源的連接建立一個與數(shù)據(jù)源的連接oledbcommand用于執(zhí)行一條用于執(zhí)行一條sql語句,以便從數(shù)據(jù)源中語句,以便從數(shù)據(jù)源中獲取數(shù)據(jù)獲取數(shù)據(jù)oledbdatareader提供從數(shù)據(jù)源讀取數(shù)據(jù)行的接口,需要與提供從數(shù)據(jù)源讀取數(shù)據(jù)行的接口,需要與oledbcommand配合使用配合使用oledbdataad
19、apter 在與數(shù)據(jù)源連接時,可從數(shù)據(jù)源讀數(shù)據(jù)填在與數(shù)據(jù)源連接時,可從數(shù)據(jù)源讀數(shù)據(jù)填充充dataset或更新數(shù)據(jù)源或更新數(shù)據(jù)源dataset是保存在內(nèi)存中供使用的數(shù)據(jù)副本是保存在內(nèi)存中供使用的數(shù)據(jù)副本 vb.net程序設(shè)計教程程序設(shè)計教程2020使用使用oledboledb訪問數(shù)據(jù)庫訪問數(shù)據(jù)庫1啟動數(shù)據(jù)適配器配置向?qū)訑?shù)據(jù)適配器配置向?qū)?shù)據(jù)適配器對象將數(shù)據(jù)適配器對象oledbdataadapter從工具箱拖從工具箱拖放到窗體或組件上。放到窗體或組件上。2創(chuàng)建連接創(chuàng)建連接 vb.net程序設(shè)計教程程序設(shè)計教程2121選擇提供程序選擇提供程序選擇提供程序選擇提供程序 vb.net程序設(shè)計教程程
20、序設(shè)計教程2222指定訪問的數(shù)據(jù)庫指定訪問的數(shù)據(jù)庫指定要訪問的指定要訪問的數(shù)據(jù)庫文件數(shù)據(jù)庫文件 vb.net程序設(shè)計教程程序設(shè)計教程2323配置命令對象配置命令對象選擇使用選擇使用sql sql 語句建立查詢語句建立查詢 vb.net程序設(shè)計教程程序設(shè)計教程2424命令對象重要屬性命令對象重要屬性命令對象最重要的屬性命令對象最重要的屬性connection 指定連接對象指定連接對象commandtype 使用命令的類型使用命令的類型commandtext 操作命令的操作命令的內(nèi)容內(nèi)容 vb.net程序設(shè)計教程程序設(shè)計教程2525連接對象重要屬性連接對象重要屬性連接對象最重要的屬性是連接對象最重
21、要的屬性是connectionstring,它是,它是一個字符串,包含了用于與數(shù)據(jù)源建立連接的相一個字符串,包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息。典型的關(guān)信息。典型的 connectionstring 屬性值如下:屬性值如下:provider = microsoft.jet.oledb.4.0; provider = microsoft.jet.oledb.4.0; data source = student.mdbdata source = student.mdbprovide,指定連接提供程序的名稱;,指定連接提供程序的名稱;data source,用于指定要連接的數(shù)據(jù)源文件。,用于指定要
22、連接的數(shù)據(jù)源文件。 vb.net程序設(shè)計教程程序設(shè)計教程2626生成數(shù)據(jù)集生成數(shù)據(jù)集 選擇選擇“數(shù)數(shù)據(jù)據(jù)| |生生成數(shù)據(jù)集成數(shù)據(jù)集”命令,打開命令,打開“生成數(shù)生成數(shù)據(jù)集據(jù)集”對話框。對話框。12. 命名數(shù)據(jù)集命名數(shù)據(jù)集 34 vb.net程序設(shè)計教程程序設(shè)計教程2727生成數(shù)據(jù)集生成數(shù)據(jù)集 選擇選擇“數(shù)數(shù)據(jù)據(jù)| |生生成數(shù)據(jù)集成數(shù)據(jù)集”命令,打開命令,打開“生成數(shù)生成數(shù)據(jù)集據(jù)集”對話框。對話框。12. 命名數(shù)據(jù)集命名數(shù)據(jù)集 34注意:這里的注意:這里的dataset1是指一個數(shù)據(jù)集的定是指一個數(shù)據(jù)集的定義,它是一個用義,它是一個用xml格式表示的,文件名為格式表示的,文件名為dataset1
23、.xsd的數(shù)據(jù)集定義文件,并不包含的數(shù)據(jù)集定義文件,并不包含任何的數(shù)據(jù)庫中的數(shù)據(jù)。而按此文件架構(gòu)產(chǎn)任何的數(shù)據(jù)庫中的數(shù)據(jù)。而按此文件架構(gòu)產(chǎn)生的生的dataset11才是一個包含實際數(shù)據(jù)的數(shù)才是一個包含實際數(shù)據(jù)的數(shù)據(jù)集對象實例。據(jù)集對象實例。 vb.net程序設(shè)計教程程序設(shè)計教程282811.2.3 數(shù)據(jù)綁定數(shù)據(jù)綁定 什么是數(shù)據(jù)綁定?什么是數(shù)據(jù)綁定?數(shù)據(jù)綁定是一個過程,即在運行時自動為與數(shù)據(jù)數(shù)據(jù)綁定是一個過程,即在運行時自動為與數(shù)據(jù)集中的元素關(guān)聯(lián)的控件設(shè)置屬性。以便通過控件集中的元素關(guān)聯(lián)的控件設(shè)置屬性。以便通過控件顯示數(shù)據(jù)集中的數(shù)據(jù)。顯示數(shù)據(jù)集中的數(shù)據(jù)。 vb.net程序設(shè)計教程程序設(shè)計教程292
24、9數(shù)據(jù)綁定數(shù)據(jù)綁定 windows 窗體有簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定窗體有簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定就是將控件綁定到單個數(shù)據(jù)字段。簡單數(shù)據(jù)綁定就是將控件綁定到單個數(shù)據(jù)字段。每個控件僅顯示數(shù)據(jù)集中的一個字段值。最常用每個控件僅顯示數(shù)據(jù)集中的一個字段值。最常用的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標簽。的簡單數(shù)據(jù)綁定是將數(shù)據(jù)綁定到文本框和標簽。要建立數(shù)據(jù)綁定,需要在設(shè)計或運行時對控件的要建立數(shù)據(jù)綁定,需要在設(shè)計或運行時對控件的databindingdatabinding屬性進行設(shè)置。屬性進行設(shè)置。 vb.net程序設(shè)計教程程序設(shè)計教程3030簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁
25、定 例例11.2 數(shù)據(jù)綁定的操作過程數(shù)據(jù)綁定的操作過程 界面設(shè)計界面設(shè)計 創(chuàng)建和配置數(shù)據(jù)集創(chuàng)建和配置數(shù)據(jù)集 設(shè)置設(shè)置綁定屬性綁定屬性 程序代碼程序代碼private sub form1_load() handles mybase.loaddataset11.clear()oledbdataadapter1.fill(dataset11, 基本情況基本情況)end sub vb.net程序設(shè)計教程程序設(shè)計教程3131簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定 使用使用bindingcontextbindingcontext 對象瀏覽數(shù)據(jù)記錄對象瀏覽數(shù)據(jù)記錄position 屬性屬性 數(shù)據(jù)集當(dāng)數(shù)據(jù)集當(dāng)前記錄的前記錄
26、的位置序號位置序號count 屬性屬性 數(shù)據(jù)表中的記錄條數(shù)數(shù)據(jù)表中的記錄條數(shù) 轉(zhuǎn)跳到第一條記錄轉(zhuǎn)跳到第一條記錄me.bindingcontext(dataset11, me.bindingcontext(dataset11, 基本情況基本情況).position = 0).position = 0轉(zhuǎn)跳到上一條記錄轉(zhuǎn)跳到上一條記錄me.bindingcontext(dataset11, me.bindingcontext(dataset11, 基本情況基本情況).position -= 1 ).position -= 1 轉(zhuǎn)跳到下一條記錄轉(zhuǎn)跳到下一條記錄me.bindingcontext(dat
27、aset11, me.bindingcontext(dataset11, 基本情況基本情況).position += 1).position += 1 最后一條記錄的最后一條記錄的position position 屬性值等于屬性值等于count count 屬性值屬性值-1 -1 vb.net程序設(shè)計教程程序設(shè)計教程3232復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定 復(fù)雜數(shù)據(jù)綁定允許將多個數(shù)據(jù)元素綁定到一個控復(fù)雜數(shù)據(jù)綁定允許將多個數(shù)據(jù)元素綁定到一個控件,同時顯示記錄源中的多行或多列。支持復(fù)雜件,同時顯示記錄源中的多行或多列。支持復(fù)雜數(shù)據(jù)綁定的控件:數(shù)據(jù)網(wǎng)格數(shù)據(jù)綁定的控件:數(shù)據(jù)網(wǎng)格datagriddatagri
28、d、組合框、組合框comboboxcombobox和列表框和列表框listboxlistbox等等 vb.net程序設(shè)計教程程序設(shè)計教程3333復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定 復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定屬屬 性設(shè)置性設(shè)置控控 件件屬屬 性性說說 明明 datagriddatasource指定數(shù)據(jù)源指定數(shù)據(jù)源, ,例如例如datasetdatamember若若dataset包含的表不止一個,包含的表不止一個,則由該屬性指定要綁定的表則由該屬性指定要綁定的表comboboxlistboxdatasource指定數(shù)據(jù)源指定數(shù)據(jù)源displaymember顯示的字段顯示的字段valuemember組合框、列表
29、框中選擇后的值組合框、列表框中選擇后的值 vb.net程序設(shè)計教程程序設(shè)計教程3434復(fù)雜數(shù)據(jù)綁定復(fù)雜數(shù)據(jù)綁定 例例11.3復(fù)雜數(shù)據(jù)綁定的操作過程復(fù)雜數(shù)據(jù)綁定的操作過程 界面設(shè)計界面設(shè)計 創(chuàng)建和配置數(shù)據(jù)集創(chuàng)建和配置數(shù)據(jù)集 數(shù)據(jù)綁定數(shù)據(jù)綁定 本例本例datagrid控件要綁定不同的控件要綁定不同的表,故需要通過表,故需要通過代碼代碼設(shè)置控件的設(shè)置控件的datasource 屬性。屬性。 程序代碼程序代碼 private sub button1_click() handles button1.clickdatagrid1.datasource = datagrid1.datasource = da
30、taset11.tablesdataset11.tables(基本情況基本情況)end subprivate sub button2_click() handles button2.clickdatagrid1.datasource = datagrid1.datasource = dataset11.tablesdataset11.tables(成績表成績表)end sub vb.net程序設(shè)計教程程序設(shè)計教程353511.2.3 使用代碼訪問數(shù)據(jù)庫使用代碼訪問數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)對象的代碼:創(chuàng)建數(shù)據(jù)對象的代碼:dim dim 數(shù)據(jù)對象數(shù)據(jù)對象 as new as new 對象類對象類(參數(shù)參數(shù)
31、) 例例11.4 用代碼實現(xiàn)例用代碼實現(xiàn)例11.2的功能的功能 界面設(shè)計界面設(shè)計 導(dǎo)入導(dǎo)入ado.net名稱空間名稱空間imports system.dataimports system.data.oledb vb.net程序設(shè)計教程程序設(shè)計教程3636創(chuàng)建對象創(chuàng)建對象 創(chuàng)建創(chuàng)建oledbconnection連接對象連接對象創(chuàng)建連接創(chuàng)建連接student.mdb的對象的對象objconn,代碼:,代碼:dim strconn as string = provider = microsoft. jet.oledb.4.0; data source = student.mdbdim objconn
32、 as new oledbconnection(strconn) objconn.open() 創(chuàng)建創(chuàng)建創(chuàng)建創(chuàng)建oledbdataadapter對象對象dim strsql = select * from 基本情況基本情況 dim objadap as new oledbdataadapter(strsql, objconn) vb.net程序設(shè)計教程程序設(shè)計教程3737創(chuàng)建對象創(chuàng)建對象 創(chuàng)建數(shù)據(jù)集對象創(chuàng)建數(shù)據(jù)集對象dim objdset as new datasetdim objdset as new dataset用數(shù)據(jù)集的用數(shù)據(jù)集的“基本情況基本情況”表填充表填充objdsetobjds
33、et對象對象 objadap.fillobjadap.fill(objdset, 基本情況基本情況) vb.net程序設(shè)計教程程序設(shè)計教程3838使用代碼綁定數(shù)據(jù)使用代碼綁定數(shù)據(jù)實現(xiàn)實現(xiàn)數(shù)據(jù)綁定數(shù)據(jù)綁定 使用使用控件的控件的databindingsdatabindings屬性屬性的的addadd方法建立方法建立綁定:綁定:控件對象控件對象.databindings.add(new binding(控控件屬性件屬性, 數(shù)據(jù)集數(shù)據(jù)集, 字段名字段名)例例 將字段姓名綁定到控件將字段姓名綁定到控件textbox1的的text 屬性:屬性:textbox1.databindings.add(new b
34、inding(text, objdset, 基本情況基本情況.姓名姓名) vb.net程序設(shè)計教程程序設(shè)計教程3939記錄的瀏覽記錄的瀏覽 瀏覽記錄,各命令按鈕的瀏覽記錄,各命令按鈕的click 事件代碼為:事件代碼為:首記錄:首記錄:me.bindingcontext(objdset, 基本情況基本情況).position = 0上一條:上一條:me.bindingcontext(objdset, 基本情況基本情況).position -= 1下一條:下一條:me.bindingcontext(objdset, 基本情況基本情況).position += 1尾記錄:尾記錄:me.bindin
35、gcontext(objdset, 基本情況基本情況).position = me.bindingcontext (objdset, 基本情況基本情況).count-1 vb.net程序設(shè)計教程程序設(shè)計教程404011.3 數(shù)據(jù)庫操作數(shù)據(jù)庫操作 11.3.1 數(shù)據(jù)庫編輯操作數(shù)據(jù)庫編輯操作常見的編輯操作就是對數(shù)據(jù)的增、刪、改。使用常見的編輯操作就是對數(shù)據(jù)的增、刪、改。使用命令對象直接對數(shù)據(jù)源進行操作,方法如下:命令對象直接對數(shù)據(jù)源進行操作,方法如下: commandtext屬性屬性 設(shè)置設(shè)置sql語句語句 調(diào)用調(diào)用execute方法方法 執(zhí)行執(zhí)行sql語句語句 executereader 返回返
36、回datareader結(jié)果集結(jié)果集 executenonquery 不返回數(shù)據(jù)的不返回數(shù)據(jù)的sql命令命令(增、刪、改增、刪、改) executescalar 返回單個數(shù)據(jù)的返回單個數(shù)據(jù)的sql命命令令(例對數(shù)據(jù)的統(tǒng)計、求和例對數(shù)據(jù)的統(tǒng)計、求和) vb.net程序設(shè)計教程程序設(shè)計教程4141增加數(shù)據(jù)記錄增加數(shù)據(jù)記錄使用使用insert語句插入一條記錄到數(shù)據(jù)源語句插入一條記錄到數(shù)據(jù)源。例如:。例如:insert into 基本情況基本情況(姓名姓名, 學(xué)號學(xué)號) values (李力李力, 50101)實際參數(shù)可通過文本框輸入,可在實際參數(shù)可通過文本框輸入,可在values短語中短語中使用使用標
37、記傳遞實參值標記傳遞實參值:insert into insert into 基本情況基本情況(姓名姓名, , 學(xué)號學(xué)號) values values (name, num)而參數(shù)定義的語法為:而參數(shù)定義的語法為:dim 參數(shù)名參數(shù)名 as new oledbparameter(sql查詢或查詢或更新字符串中的映射名更新字符串中的映射名,數(shù)據(jù)類型數(shù)據(jù)類型,長度長度) vb.net程序設(shè)計教程程序設(shè)計教程4242增加數(shù)據(jù)記錄例增加數(shù)據(jù)記錄例例例11.5 在例在例11.4的基礎(chǔ)上添加增加記錄、刪除記的基礎(chǔ)上添加增加記錄、刪除記錄、修改記錄按鈕,當(dāng)單擊錄、修改記錄按鈕,當(dāng)單擊“增加增加”按鈕時,先按鈕
38、時,先清空文本框,并將按鈕提示改變成清空文本框,并將按鈕提示改變成“確認確認”;當(dāng);當(dāng)在文本框輸入數(shù)據(jù)后,再單擊在文本框輸入數(shù)據(jù)后,再單擊“確認確認”,將文本,將文本框內(nèi)輸入的數(shù)據(jù)構(gòu)成一條記錄插入到數(shù)據(jù)源、重框內(nèi)輸入的數(shù)據(jù)構(gòu)成一條記錄插入到數(shù)據(jù)源、重新填充數(shù)據(jù)集并恢復(fù)按鈕提示。新填充數(shù)據(jù)集并恢復(fù)按鈕提示。 代碼說明代碼說明 vb.net程序設(shè)計教程程序設(shè)計教程4343刪除數(shù)據(jù)源內(nèi)的記錄刪除數(shù)據(jù)源內(nèi)的記錄 刪除刪除數(shù)據(jù)源數(shù)據(jù)源內(nèi)的記錄內(nèi)的記錄使用使用delect語句語句delectdelect 基本情況基本情況 where where 學(xué)號學(xué)號 = 50102= 50102實參實參50102通過
39、文本框輸入。要用輸入值構(gòu)成刪通過文本框輸入。要用輸入值構(gòu)成刪除條件,除了采用參數(shù)傳遞方法外,也可用字符除條件,除了采用參數(shù)傳遞方法外,也可用字符連接運算符拼接變量形成條件,例如連接運算符拼接變量形成條件,例如:delect 基本情況基本情況 where 學(xué)號學(xué)號 = & textbox2.text 注意:如果字段的類型為字符型,則輸入值的兩注意:如果字段的類型為字符型,則輸入值的兩側(cè)加上單引號側(cè)加上單引號:delect 基本情況基本情況 where 學(xué)號學(xué)號 = & textbox2.text & 字段的類型為日期型,將單引號改為字段的類型為日期型,將單引號改為# #
40、vb.net程序設(shè)計教程程序設(shè)計教程4444刪除數(shù)據(jù)記錄刪除數(shù)據(jù)記錄 刪除數(shù)據(jù)集內(nèi)的行使用刪除數(shù)據(jù)集內(nèi)的行使用rows對象的對象的delete方法方法例:刪除例:刪除tables(“基本情況基本情況”)中的第三條記錄:中的第三條記錄:objdset.tables (基本情況基本情況 ).rows (2).deletedelete方法并不真正實現(xiàn)刪除,而只是在方法并不真正實現(xiàn)刪除,而只是在rows集合中對指定的行作刪除標記,直到數(shù)據(jù)集對象集合中對指定的行作刪除標記,直到數(shù)據(jù)集對象調(diào)用調(diào)用acceptchanges方法的時候,才真正被刪除;方法的時候,才真正被刪除;如果是如果是rejectchan
41、ges方法被調(diào)用,那么方法被調(diào)用,那么delete方法刪除的數(shù)據(jù)行對象將被恢復(fù)。方法刪除的數(shù)據(jù)行對象將被恢復(fù)。例例11.6 為例為例11.5中刪除按鈕添加代碼。中刪除按鈕添加代碼。 代碼說明代碼說明 vb.net程序設(shè)計教程程序設(shè)計教程4545修改數(shù)據(jù)記錄修改數(shù)據(jù)記錄 修改修改數(shù)據(jù)源數(shù)據(jù)源中的記錄使用中的記錄使用updateupdate語句語句update update 基本情況基本情況 setset 專業(yè)專業(yè)= 計算機計算機 where 學(xué)號學(xué)號 = 50102修改程序編寫與增加記錄類似,其關(guān)鍵是:修改程序編寫與增加記錄類似,其關(guān)鍵是: 使用參數(shù)傳遞或字符動態(tài)拼接的方法將新的使用參數(shù)傳遞或字
42、符動態(tài)拼接的方法將新的數(shù)據(jù)傳遞到數(shù)據(jù)傳遞到update 語句語句 能在數(shù)據(jù)源中定位要更新的記錄能在數(shù)據(jù)源中定位要更新的記錄( (通常可使用通??墒褂藐P(guān)鍵字段作為定位條件關(guān)鍵字段作為定位條件) )對于對于數(shù)據(jù)集數(shù)據(jù)集,數(shù)據(jù)綁定結(jié)構(gòu)通常是雙向的,能自,數(shù)據(jù)綁定結(jié)構(gòu)通常是雙向的,能自動將更改從數(shù)據(jù)綁定控件發(fā)送到數(shù)據(jù)集。動將更改從數(shù)據(jù)綁定控件發(fā)送到數(shù)據(jù)集。例例11.7 為修改按鈕添加代碼為修改按鈕添加代碼 代碼說明代碼說明 vb.net程序設(shè)計教程程序設(shè)計教程464611.3.2 數(shù)據(jù)庫查詢操作數(shù)據(jù)庫查詢操作 方法一方法一 通過命令對象執(zhí)行通過命令對象執(zhí)行sql語句,從數(shù)語句,從數(shù)據(jù)源中獲取信息,查詢
43、條件由據(jù)源中獲取信息,查詢條件由select語句的語句的where短語構(gòu)成,使用短語構(gòu)成,使用and與與or邏輯運算符組邏輯運算符組合出復(fù)雜的查詢條件合出復(fù)雜的查詢條件 方法二方法二 使用數(shù)據(jù)集的數(shù)據(jù)視圖使用數(shù)據(jù)集的數(shù)據(jù)視圖(dataview)的篩選功能的篩選功能 vb.net程序設(shè)計教程程序設(shè)計教程4747數(shù)據(jù)庫查詢操作數(shù)據(jù)庫查詢操作 數(shù)據(jù)視圖數(shù)據(jù)視圖(dataview)的的主要方法與屬性主要方法與屬性 方法與屬性方法與屬性功能描述功能描述使用示例使用示例sort方法方法對對dataview包含包含的數(shù)據(jù)進行排序的數(shù)據(jù)進行排序objdataview.sort =姓名姓名find方法方法搜索指
44、定的數(shù)據(jù)搜索指定的數(shù)據(jù)行行(必須先排序必須先排序)rec=objdataview.find(李力李力)rowfilter屬性屬性篩選滿足條件的篩選滿足條件的數(shù)據(jù)行數(shù)據(jù)行objdataview.rowfilter = 成績成績80 vb.net程序設(shè)計教程程序設(shè)計教程4848模糊查詢模糊查詢 模糊查詢使用運算符模糊查詢使用運算符likelike,用百分號,用百分號%來代替任來代替任意個不確定的內(nèi)容,用下劃線意個不確定的內(nèi)容,用下劃線_ _代替一個不確定的代替一個不確定的內(nèi)容。內(nèi)容。例如,例如,“姓名姓名 like 張張%”將查詢所有張姓的人員,將查詢所有張姓的人員,而而“姓名姓名 like 張張_” 查詢以查詢以“張張”開頭,只有兩開頭,只有兩個字的記錄。個字的記錄。例例11.8 設(shè)計一個應(yīng)用程序,演示不同的查詢功能設(shè)計一個應(yīng)用程序,演示不同的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場店面轉(zhuǎn)讓合同范本
- 公司勸退員工合同范本
- 共同管理合同范本
- 商貿(mào)公司策劃合同范本
- 水費收取維護合同范本
- 吉林省吉林市蛟河市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含解析)
- 中國傳統(tǒng)節(jié)日-端午節(jié)73
- 2025年生豬交易合同標準范本
- 2025版租賃合同樣書
- 語文課程標準與教材研究知到課后答案智慧樹章節(jié)測試答案2025年春內(nèi)江師范學(xué)院
- 2024年湖南省高等學(xué)校對口招生考試英語試卷試題真題
- 公司2025年工會工作要點
- 2025年中國煤炭地質(zhì)總局社會招聘20人筆試參考題庫附帶答案詳解
- 2025內(nèi)蒙古能源集團智慧運維公司社會招聘(105人)筆試參考題庫附帶答案詳解
- 公共衛(wèi)生應(yīng)急管理調(diào)研報告范文
- 【9物一模】安徽合肥瑤海區(qū)2025年中考物理一模試卷
- 2025-2030中國食品滅菌設(shè)備行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 廣東省深圳市寶安區(qū)10校聯(lián)考2023-2024學(xué)年八年級下學(xué)期期中數(shù)學(xué)試題(含答案)
- 2025年全國中醫(yī)醫(yī)師定期考核中醫(yī)專業(yè)理論知識考試題庫及答案(共六套)
- 餐廳點菜技巧培訓(xùn)
- 大風(fēng)天氣施工專項方案
評論
0/150
提交評論