




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、曲阜師范大學計算機科學學院-3.1 設計系統(tǒng)數據庫結構設計系統(tǒng)數據庫結構-3.2 系統(tǒng)數據庫實現系統(tǒng)數據庫實現3.3 構建數據訪問層構建數據訪問層L3.1 系統(tǒng)數據庫實現系統(tǒng)數據庫實現L3.2 構建數據訪問層構建數據訪問層曲阜師范大學計算機科學學院根據成績管理系統(tǒng)的功能模塊,設計數據庫結構,過程如根據成績管理系統(tǒng)的功能模塊,設計數據庫結構,過程如下:下:確定所有的實體確定所有的實體確定實體之間的聯系確定實體之間的聯系畫出畫出E-R圖圖將將E-R圖轉換成關系表圖轉換成關系表曲阜師范大學計算機科學學院學生學生學號學號姓名姓名班級班級班級編號班級編號班級名稱班級名稱教師教師教工編號教工編號姓名姓名課
2、程名課程名課程課程課程編號課程編號課程學分課程學分屬于屬于1m成績成績mn排課排課mnkE-R圖圖成績成績開課學期開課學期成績是否錄入成績是否錄入曲阜師范大學計算機科學學院轉換規(guī)則:轉換規(guī)則:每個實體轉換成一張表每個實體轉換成一張表多對多的聯系轉換成一張表多對多的聯系轉換成一張表一對多的聯系:將一方的主碼加入到多方的表中一對多的聯系:將一方的主碼加入到多方的表中根據以上規(guī)則,轉換成如下根據以上規(guī)則,轉換成如下6張表。數據庫名稱為張表。數據庫名稱為SMS,內部的表名和字段名分別如下:內部的表名和字段名分別如下:(1)班級表()班級表(Class):班級編號、班級名稱。):班級編號、班級名稱。(2
3、)學生表()學生表(Student):學號、姓名、性別、年齡、所屬班級編號、):學號、姓名、性別、年齡、所屬班級編號、手機、郵箱、入學年份、學制、家庭地址、登錄密碼、個人愛好、個人手機、郵箱、入學年份、學制、家庭地址、登錄密碼、個人愛好、個人圖片。圖片。(3)教工表()教工表(Teacher):教工編號、姓名、性別、手機、座機、郵):教工編號、姓名、性別、手機、座機、郵箱、登錄密碼。箱、登錄密碼。(4)課程表()課程表(Course):課程編號、課程名、課程學分。):課程編號、課程名、課程學分。(5)課程安排表()課程安排表(Arrange):班級編號、課程編號、成績是否錄入、):班級編號、課
4、程編號、成績是否錄入、開課學期、授課老師編號。開課學期、授課老師編號。(6)學生成績表()學生成績表(Score):學號、課程編號、課程成績。):學號、課程編號、課程成績。曲阜師范大學計算機科學學院表作用說明、詳細表結構、表作用說明、詳細表結構、表內字段說明,詳見表內字段說明,詳見表表3.1表表3.6。不同表之間還存在著內部不同表之間還存在著內部的關聯關系,對表內數據的修的關聯關系,對表內數據的修改需要滿足它們之間的這些關改需要滿足它們之間的這些關聯約束,具體的數據庫表之間聯約束,具體的數據庫表之間的關聯關系如圖的關聯關系如圖3.1所示。所示。確定并畫出表間關系圖確定并畫出表間關系圖確定建表順
5、序確定建表順序自動生成的字段處理自動生成的字段處理用命令建庫和表(創(chuàng)建用命令建庫和表(創(chuàng)建SMS數據庫數據庫.sql)圖3.1 數據表之間關系曲阜師范大學計算機科學學院(1)選擇)選擇“開始開始”“所有程序所有程序”“Microsoft SQL Server 2005”“SQL Server Management Studio”,出現如圖,出現如圖3.2所示的界面。所示的界面。圖3.2 SQL Server 2005登錄界面曲阜師范大學計算機科學學院從從“服務器名稱服務器名稱”下拉列表中選擇或輸入所要連接的下拉列表中選擇或輸入所要連接的SQL Server 2005服務器名稱,服務器名稱,“身
6、份驗證身份驗證”下拉框中選擇下拉框中選擇“SQL Server 身份驗證身份驗證”,并在,并在“登錄名登錄名”和和“密碼密碼”框處輸入對應的登錄名和密碼,單擊框處輸入對應的登錄名和密碼,單擊“連接連接”按鈕,按鈕,出現如圖出現如圖3.3所示的界面。所示的界面。點擊點擊“新建查詢新建查詢”按鈕,在查詢窗口中用命令建庫和表按鈕,在查詢窗口中用命令建庫和表圖3.3 SQL Server 2005 服務器管理界面曲阜師范大學計算機科學學院(2)右擊分支中的“數據庫”,選擇“新建數據庫”,出現如圖3.4所示的界面。在“數據庫名稱”處輸入“SMS”,單擊“確定”按鈕,即可建立好一個空的SMS數據庫,展開“
7、數據庫”目錄,就會看到“SMS”數據庫,如圖3.5所示。 圖3.4 界面方式新建數據庫 圖3.5 建成后的SMS數據庫曲阜師范大學計算機科學學院(3)展開“SMS”目錄,右擊“表”節(jié)點,選擇“新建表”,出現表設計界面。在“列名”處輸入對應的字段,在“數據類型”處選擇對應的數據類型,并對有關的數據類型進行相應的設置。所有的輸入結束后,右擊要設為主鍵的列,選擇“設置主鍵”,然后單擊“保存”按鈕,在彈出的窗口中輸入“Student”即可設計Student表,設計如圖3.6所示。其他表的建立過程類似,請自行建立。圖3.6 表設計界面曲阜師范大學計算機科學學院(4)右擊“SMS”,選擇“新建查詢”,通過
8、SQL語句語句的方式為所創(chuàng)建的表插入一些初始數據,代碼如下:INSERT INTO Class(classID,className,enrollTime,GradTime)VALUES(B06051,06網絡工程班,2006-09-01,2010-07-01)INSERT INTO Class(classID,className,enrollTime,GradTime)VALUES(B06053,06軟件工程班,2006-09-01,2010-07-01)在開發(fā)過程中所需要的測試數據,可以通過這種方式自行添加。(5)添加表的外鍵約束。在數據庫的“對象資源管理器”中右擊SMS數據庫中的“數據庫關
9、系圖”,選擇“新建數據庫關系圖”選項,在彈出的“添加表”對話框中添加所有的表,右擊“Score”表,選擇“關系”選項,在彈出的“外鍵關系”對話框中單擊“表和列規(guī)范”后面出現 圖標,彈出“表和列”對話框。在此對話框中主鍵表選擇“Course”,選擇主鍵“CourseID”;外鍵表選擇“Score”,選擇“CourseID”。這樣“Course”和“Score”的外鍵關系設置成功。其他的表關系設置步驟與其類似,設置好后如圖3.1所示。曲阜師范大學計算機科學學院(6)班級表中的班級人數字段,此字段的值應根據學生)班級表中的班級人數字段,此字段的值應根據學生表內學生的添加或刪除操作自動進行增加或減少,
10、因此需要表內學生的添加或刪除操作自動進行增加或減少,因此需要為其創(chuàng)建一個觸發(fā)器,讓其根據學生表內學生記錄的變化自為其創(chuàng)建一個觸發(fā)器,讓其根據學生表內學生記錄的變化自動維護。動維護。創(chuàng)建過程如下:展開創(chuàng)建過程如下:展開“SMS”數據庫文件夾,展開數據庫文件夾,展開“表表”文件夾,展開文件夾,展開“Student”,右擊,右擊“觸發(fā)器觸發(fā)器”,選擇,選擇“新建新建觸發(fā)器觸發(fā)器”,打開,打開“新建觸發(fā)器新建觸發(fā)器”窗口,本窗口已生成了新建窗口,本窗口已生成了新建觸發(fā)器的模板代碼,可以在此基礎上進行修改,修改完成后觸發(fā)器的模板代碼,可以在此基礎上進行修改,修改完成后的的觸發(fā)器代碼觸發(fā)器代碼。曲阜師范大
11、學計算機科學學院(7)由于系統(tǒng)中經常進行學生插入操作,為了提高執(zhí)行效率,可以為此操作創(chuàng)建一個存儲過程。創(chuàng)建過程如下:展開“SMS”數據庫文件夾,展開“可編程性”文件夾,右擊“存儲過程”,選擇“新建存儲過程”,打開“創(chuàng)建存儲過程”窗口,本窗口已生成了新建存儲過程的模板代碼,可以在此基礎上進行修改,修改完成后的存儲過程的代碼如下:SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE insertStudentstuID NCHAR(8),stuName NCHAR(20),stuSex NCHAR(1),stuAge int,s
12、tuClassID NCHAR(8),stuEmail NVARCHAR(100),stuTelphone NvarCHAR(11),stuEnrollmentTime NCHAR(4),stuHomeAddress NVARCHAR(100),stuPassword NCHAR(32),stuLove NVARCHAR(100),stuPic NVARCHAR(200)AS INSERT INTO Student(stuID,stuName,stuSex,stuAge,stuClassID,stuEmail,stuTelphone,stuEnrollmentTime,stuHomeAddre
13、ss,stuPassword,stuLove,stuPic)VALUES(stuID,stuName,stuSex,stuAge,stuClassID,stuEmail,stuTelphone,stuEnrollmentTime,stuHomeAddress,stuPassword,stuLove,stuPic)曲阜師范大學計算機科學學院數據訪問層數據訪問層主要任務是對下層實現對數據源的檢索和編輯主要任務是對下層實現對數據源的檢索和編輯功能,對上層提供一個方便調用的數據訪問接口,調用者只功能,對上層提供一個方便調用的數據訪問接口,調用者只需傳遞必須的參數即可實現數據庫的檢索和操作功能。需傳遞必
14、須的參數即可實現數據庫的檢索和操作功能。下面通過邊編寫邊解釋的方式完成數據庫訪問層。下面通過邊編寫邊解釋的方式完成數據庫訪問層。(1)運行)運行Visual Studio 2008,進入,進入Visual Studio 2008起始起始頁,選擇頁,選擇“文件文件”“打開打開”“網站網站”菜單項,打開前面菜單項,打開前面創(chuàng)建的創(chuàng)建的“學生成績管理系統(tǒng)學生成績管理系統(tǒng)”網站,展開網站,展開“解決方案資源管解決方案資源管理器理器”窗口,右擊空白處,選擇窗口,右擊空白處,選擇“添加添加”“新建項新建項”菜單菜單項,打開項,打開“添加新項窗口添加新項窗口”對話框,選擇對話框,選擇“類類”模板,并命模板,
15、并命名類名為名類名為“commDBHelper.cs”。(2)單擊)單擊“添加添加”按鈕,提示按鈕,提示“是否把文件放入到是否把文件放入到APP_Code目錄中目錄中”,單擊,單擊“是是”按鈕,進入到此類的代碼窗按鈕,進入到此類的代碼窗口,利用此類實現數據訪問層。口,利用此類實現數據訪問層。曲阜師范大學計算機科學學院(3)把數據庫連接串配置到)把數據庫連接串配置到web.config文件中。文件中。由于便于系統(tǒng)的移植、安全等原因,通常需要把數據源由于便于系統(tǒng)的移植、安全等原因,通常需要把數據源的連接串保存在的連接串保存在web.config配置文件的配置文件的配配置節(jié)中,因此需要首先在置節(jié)中,
16、因此需要首先在web.config文件中把文件中把改成如下的形式:改成如下的形式:曲阜師范大學計算機科學學院此數據庫連接也可以使用數據源控件生成,操作方法如下:此數據庫連接也可以使用數據源控件生成,操作方法如下: 打開打開Default.aspx“設計設計”視圖,從工具箱中拖放一個視圖,從工具箱中拖放一個SqlDataSource控件到此頁面,單擊右上角控件到此頁面,單擊右上角“SqlDataSource任務任務”中的中的“配置數據源配置數據源”,在彈出的,在彈出的“配置數據源配置數據源”對話框中單擊對話框中單擊“新建連接新建連接”按鈕。按鈕。 在彈出的在彈出的“添加連接添加連接”對話框中,對
17、話框中,“數據源數據源”選擇選擇“Microsoft SQL Server”,“服務器名服務器名”選擇要連接的服務器。選擇選擇要連接的服務器。選擇“使用使用SQL Server身份認證身份認證”登錄到服務器,其中登錄到服務器,其中“用戶名用戶名”和和“密碼密碼”分別輸入分別輸入登錄到登錄到SQL Server服務器的用戶名和密碼。在服務器的用戶名和密碼。在“選擇和輸入一個數據庫名選擇和輸入一個數據庫名”的下拉框中選擇本系統(tǒng)所創(chuàng)建的數據庫的下拉框中選擇本系統(tǒng)所創(chuàng)建的數據庫SMS,單擊,單擊“測試連接測試連接”按鈕,按鈕,判斷是否連接成功,若連接成功單擊判斷是否連接成功,若連接成功單擊“確定確定”
18、按鈕。按鈕。 返回到返回到“配置數據源配置數據源”窗口,單擊窗口,單擊“下一步下一步”按鈕,在彈出的按鈕,在彈出的“把連接字符串保存到應用程序中把連接字符串保存到應用程序中”對話框中選中對話框中選中“把此連接另存為把此連接另存為”復選框,并命名為復選框,并命名為“SqlServer2005 ConnectionString”,將用于數據庫連,將用于數據庫連接的串保存到應用程序配置文件(接的串保存到應用程序配置文件(web.config)中,打開配置文件則可)中,打開配置文件則可以看到系統(tǒng)自動生成的數據庫連接字符串。以看到系統(tǒng)自動生成的數據庫連接字符串。 刪除刪除Default.aspx頁面中的
19、頁面中的SqlDataSource控件??丶G穾煼洞髮W計算機科學學院(4)引用相關命名空間)引用相關命名空間/ASP.NET中用于讀中用于讀 取取web.config的命名空間的命名空間using System.Web.Configuration;/ADO.NET中用于訪問中用于訪問SQL Server 2005數據的數據提供程數據的數據提供程序的命名空間序的命名空間using System.Data.SqlClient;using System.Data;曲阜師范大學計算機科學學院(5)在類的內部定義一個字符串,用來保存從)在類的內部定義一個字符串,用來保存從Web.config配置文件
20、內的所要連接的數據源連接串。通過配置文件內的所要連接的數據源連接串。通過WebConfigurationManager類可以實現對數據庫連接串的操作。類可以實現對數據庫連接串的操作。/從從Web.config文件中把文件中把SqlServer2005ConnectionString串串的值讀取出來,存放到一個靜態(tài)變量中的值讀取出來,存放到一個靜態(tài)變量中private static string connStr = WebConfigurationManager.ConnectionStringsSqlServer2005ConnectionString.ConnectionString.ToS
21、tring();練習:新建一個練習:新建一個testdb.aspx頁面練習數據庫的訪問頁面練習數據庫的訪問曲阜師范大學計算機科學學院(6)利用)利用ADO.NET對數據查詢接口進行封裝,用于返回多條記錄集。對數據查詢接口進行封裝,用于返回多條記錄集。在數據庫的操作過程中經常要進行查詢,并且滿足查詢條件的會有多條,在數據庫的操作過程中經常要進行查詢,并且滿足查詢條件的會有多條,為了查詢的便利,把此類數據查詢封裝成一個方法,以方便快速地為了查詢的便利,把此類數據查詢封裝成一個方法,以方便快速地實現實現查詢查詢。(7)對)對ADO.NET的數據查詢接口進行封裝,用于根據主鍵獲取單條的數據查詢接口進行
22、封裝,用于根據主鍵獲取單條記錄。在數據庫操作中,經常要利用表的主鍵進行數據查詢,此種情況記錄。在數據庫操作中,經常要利用表的主鍵進行數據查詢,此種情況下只會返回一條記錄。為便于對查詢結果的操作,將此類查詢封裝為一下只會返回一條記錄。為便于對查詢結果的操作,將此類查詢封裝為一個方法,查詢的返回結果是一個個方法,查詢的返回結果是一個DataRow對象,可以方便地通過此對象對象,可以方便地通過此對象對查詢的結果對查詢的結果進行訪問進行訪問。(8)對)對ADO.NET的數據編輯接口進行封裝,用于普通的無事務要求的數據編輯接口進行封裝,用于普通的無事務要求單條編輯操作。在數據庫操作中,經常要對數據進行增
23、加、修改、刪除單條編輯操作。在數據庫操作中,經常要對數據進行增加、修改、刪除等操作,將此操作封裝為一個方法等操作,將此操作封裝為一個方法以便調用以便調用。曲阜師范大學計算機科學學院(9)對)對ADO.NET的數據編輯接口進行封裝,用于執(zhí)行連續(xù)的多條操的數據編輯接口進行封裝,用于執(zhí)行連續(xù)的多條操作,并要求多條操作擁有事務控制功能。在數據庫操作過程中,會有多作,并要求多條操作擁有事務控制功能。在數據庫操作過程中,會有多條操作一起執(zhí)行,并且要求幾個操作之間滿足事務的特性。為便于此類條操作一起執(zhí)行,并且要求幾個操作之間滿足事務的特性。為便于此類操作的執(zhí)行,將此類操作封裝為操作的執(zhí)行,將此類操作封裝為一
24、個方法一個方法。(10)對)對Command對象的對象的ExecuteScala進行封裝,返回查詢結果的第進行封裝,返回查詢結果的第一行第一列。在數據庫操作過程中,經常會用到查詢匯總等操作,將此一行第一列。在數據庫操作過程中,經常會用到查詢匯總等操作,將此類操作封裝為一個方法以方便快速地類操作封裝為一個方法以方便快速地調用調用。曲阜師范大學計算機科學學院(11)為創(chuàng)建SqlParamater參數封裝一個方法。為了便于快速地創(chuàng)建SqlCommand操作所使用的參數對象,將創(chuàng)建參數對象封裝為一個方法,以方便快速地調用。 / / 創(chuàng)建參數對象 / / 參數名稱 / 參數類型 / 參數的值 / pub
25、lic static SqlParameter CreateParameters(string paraName, DbType paraType, string paraValue) SqlParameter para = new SqlParameter(); para.ParameterName = paraName; para.DbType = paraType; para.Value = paraValue; return para; 曲阜師范大學計算機科學學院L1. SQL語句語句1. 數據查詢語句數據查詢語句SELECTSELECT查詢是SQL語言的核心,功能強大,和各類SQL子
26、句結合,可完成復雜的查詢操作。在數據庫應用中,最常用的操作是查詢,查詢還是數據庫的其他操作(如統(tǒng)計、插入、刪除及修改)的基礎。SELECT語句很復雜,主要的子句如下:SELECT DISTINCT 別名.字段名或表達式 AS 列標題 /* 指定要選擇的列或行及其限定 */FROM table_sources /* FROM子句,指定表或視圖 */ WHERE search_condition /* WHERE子句,指定查詢條件 */ GROUP BY group_by_expression /* GROUP BY子句,指定分組表達式 */ ORDER BY order_expression A
27、SC | DESC 曲阜師范大學計算機科學學院其中,SELECT和FROM子句是不可缺少的。 SELECT子句指出查詢結果中顯示的字段名,以及字段名和函數組成的表達式等。可用DISTINCT去除重復的記錄行;AS列標題指定查詢結果顯示的列標題。若要顯示表中所有字段,可用通配符“*”代替字段名列表。 FROM字句用來指定所查詢的表或視圖,既可以是單個表或視圖,也可以是多個表或視圖,多個表或視圖之間采用“,”分割。 WHERE子句定義了查詢條件。WHERE子句必須緊跟FROM子句之后,其基本格式為:WHERE 其中的search_condition為查詢條件,常用格式為: NOT | ( ) AN
28、D | OR NOT | () ,n 曲阜師范大學計算機科學學院其中predicate為判定運算,結果為TRUE、FALSE或UNKNOWN,格式為: expression = | | | = | | != | ! expression /* 比較運算 */| string_expression NOT LIKE string_expression ESCAPE escape_character /* 字符串模式匹配 */ | expression NOT BETWEEN expression AND expression /* 指定范圍 */ | expression IS NOT NULL
29、 /* 是否空值判斷 */ | expression NOT IN ( subquery | expression ,n ) /* IN子句 */ | expression = | | | = | | != | ! ALL | SOME | ANY ( subquery ) /* 比較子查詢 */ | EXIST ( subquery ) /* EXIST子查詢 */曲阜師范大學計算機科學學院下面用示例說明SQL語句的使用,對Student數據庫進行各種查詢。(1)查詢Student數據庫的students表中各個同學的姓名和總學分。USE StudentSELECT name,totalsc
30、ore FROM students(2)查詢表中所有記錄。查詢students表中各個同學的所有信息。SELECT * FROM students(3)條件查詢。查詢students表中總學分大于等于120的同學的情況。SELECT * FROM students WHERE totalscore = 120(4)多重條件查詢。查詢students表中所在系為“計算機”且總學分大于等于120的同學的情況。SELECT * FROM students WHERE totalscore = 120 AND major=計算機曲阜師范大學計算機科學學院(5)使用LIKE謂詞進行模式匹配。查詢stud
31、ents表中姓“王”且單名的學生情況。SELECT * FROM students WHERE name LIKE 王_(6)用BETWEENAND指定查詢范圍。查詢students表中不在1979年出生的學生情況。SELECT * FROM students WHERE birthday NOT BETWEEN 1979-1-1 and 1979-12-31(7)空值比較。查詢總學分尚不定的學生情況。SELECT * FROM students WHERE totalscore IS NULL(8)自然連接查詢。查找計算機系學生姓名及其“C程序設計”課程的考試分數情況。SELECT name
32、,grade FROM students, courses,grades, WHERE department = 計算機 AND student.studentid = grades.studentidAND courses.courseid = grades.coursesid曲阜師范大學計算機科學學院(9)IN子查詢。查找選修了課程號為101的課程的學生的情況。SELECT * FROM studentsWHERE studentid IN ( SELECT studentid FROM courses WHERE courseid = 101 )在執(zhí)行包含子查詢的SELECT語句時,系統(tǒng)
33、先執(zhí)行子查詢,產生一個結果表,再執(zhí)行外查詢。本例中,先執(zhí)行子查詢:SELECT studentid FROM courses WHERE courseid = 101得到一個只含有studentid列的結果表,courses中courseid列值為101的行在該結果表中都有一行。再執(zhí)行外查詢,若students表中某行的stuentid列值等于子查詢結果表中的任一個值,則該行就被選擇到最終結果表中。曲阜師范大學計算機科學學院(10)比較子查詢,這種子查詢可以認為是IN子查詢的擴展,將表達式的值與子查詢的結果進行比較運算。查找課程號206的成績不低于課程號101的最低成績的學生的學號。SELEC
34、T studentid FROM grades WHERE courseid = 206 AND grade ! ANY ( SELECT grade FROM grades WHERE courseid = 101 )曲阜師范大學計算機科學學院(11)EXISTS子查詢。EXISTS謂詞用于測試子查詢的結果是否為空表,若子查詢的結果集不為空,則EXISTS返回TRUE,否則返回FALSE。EXISTS還可與NOT結合使用,即NOT EXISTS,其返回值與EXISTS剛好相反。查找選修206號課程的學生姓名。SELECT name FROM students WHERE EXISTS ( S
35、ELECT * FROM grades WHERE studentid = students.studentid AND courseid = 206 )曲阜師范大學計算機科學學院(12)查找選修了全部課程的同學的姓名(即查找沒有一門功課不選修的學生)。SELECT name FROM students WHERE NOT EXISTS ( SELECT * FROM courses WHERE NOT EXISTS ( SELECT * FROM grades WHERE studentid=XS.studentid AND courseid=courses.courseid ) )(13)
36、查詢結果分組。將各課程成績按學號分組。SELECT studentid,grade FROM grades GROUP BY studentid(14)查詢結果排序。將計算機系的學生按出生時間先后排序。SELECT * FROM students WHERE department = 計算機 ORDER BY birthday曲阜師范大學計算機科學學院2數據插入語句數據插入語句INSERTINSERT可添加一個或多個記錄至表中。INSERT有兩種語法形式:INSERT INTO target IN externaldatabase (fields_list)DEFAULT VALUES|VAL
37、UES(DEFAULT|expression_list)或INSERT INTO target IN externaldatabase fields_listSELECT|EXECUTEtarget:欲追加記錄的表(Table)或視圖(View)的名稱。externaldatabase:外部數據庫的路徑和名稱。expression_list:需要插入的字段值表達式列表,其個數應與記錄的字段個數一致,若指定要插入值的字段fields_list,則應與fields_list的字段個數相一致。使用第一種形式將一個記錄或記錄的部分字段插入到表或視圖中。第二種形式的INSERT語句插入來自SELECT語
38、句或來自EXECUTE語句執(zhí)行的存儲過程的結果集。例如,以下語句向students表添加一條記錄:INSERT INTO students VALUES(990206,羅亮, 0 ,1/30/1980, 1, 150)曲阜師范大學計算機科學學院3數據更新語句數據更新語句UPDATEUPDATE語句用來更新表中的記錄。UPDATE語句的語法格式如下:UPDATE table_nameSET Field_1=expression_1,Field_2=expression_2FROM table1_name|view1_name,table2_name|view2_nameWHEREField:需要
39、更新的字段。Expression:要更新字段的新值表達式。例如,以下語句將計算機系的學生的總分增加10:UPDATE studentsSET totalscore = totalscore +10WHERE department = 計算機曲阜師范大學計算機科學學院4數據刪除語句數據刪除語句DELETEDELETE用來從一個或多個表中刪除記錄。DELETE語句的語法格式如下:DELETE FROM table_namesWHERE例如,以下語句從students表中刪除姓名為“羅亮”的記錄:DELETE FROM students WHERE name = 羅亮曲阜師范大學計算機科學學院5存儲
40、過程存儲過程存儲過程(Stored Procedure)是存放于數據庫中的子程序,它在服務器端運行,是由一系列SQL語句和控制語句組成的數據處理過程。使用存儲過程的優(yōu)點是: 更快的執(zhí)行速度。 降低網絡流量。 資源共享和安全操作。 靈活的編程及維護方式。因存儲過程具有執(zhí)行速度快、功能封裝和安全操作等優(yōu)點,所以應用開發(fā)中存儲過程得到了廣泛應用。曲阜師范大學計算機科學學院在SQL Server 2005中創(chuàng)建存儲過程的SQL命令是Create Procedure,其語法格式如下:CREATE PROCEDURE procedure_name /* 定義存儲過程名 */ parameter data_
41、type /* 定義參數的類型 */ VARYING = default OUTPUT /* 定義參數的屬性 */ ,.n1 WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION /* 定義存儲過程的處理方式 */ FOR REPLICATION AS BEGINsql_statement .n2 /* 執(zhí)行的操作 */END曲阜師范大學計算機科學學院其中,procedure_name是定義的存儲過程名,其他參數的含義如下:parameter為存儲過程的形參,符號作為第一個字符來指定參數名稱。參數名必須符合標識符規(guī)則,創(chuàng)建存儲過程時,可聲明一
42、個或多個參數,執(zhí)行存儲過程時應提供相應的實參,除非定義了該參數的默認值,默認參數值只能為常量。形參局部于該存儲過程。data_type用于指定形參數據類型,形參可為SQL Server支持的任何類型。default指定存儲過程輸入參數的默認值,默認值必須是常量或NULL,默認值中可以包含通配符(%、_、和),如果定義了默認值,執(zhí)行存儲過程時根據情況可不提供實參。關鍵字OUTPUT用于指定參數從存儲過程返回信息。n1表示可為存儲過程指定若干個參數。sql_statements是SQL語句,用于描述所定義的存儲過程所要執(zhí)行的操作。n2表示可以有多個SQL語句,多個SQL語句一起組成存儲過程需要執(zhí)行
43、的一系列操作。曲阜師范大學計算機科學學院例如:CREATE PROCEDURE InsertStudent CN nchar(10), CS int, Age intASBEGINInsert INTO Course (courseName, courseScore) Values (CN,CS)END曲阜師范大學計算機科學學院6觸發(fā)器觸發(fā)器觸發(fā)器也可用于強制引用完整性,以便在多個表中添加、更新或刪除行時,保留在這些表之間所定義的關系。使用觸發(fā)器的優(yōu)點如下: 觸發(fā)器是自動的。它們可在對表的數據做了任何修改(如手工輸入或者應用程序采取的操作)之后立即被激活。 觸發(fā)器可以通過數據庫中的相關表進行級
44、聯更改。例如,可以在 titles 表的 title_id 列上編寫一個刪除觸發(fā)器,以觸發(fā)在其他表中刪除各匹配行的操作。該觸發(fā)器用 title_id 列作為唯一鍵,在 titleauthor、sales 和 roysched 表中對各匹配行進行定位。 觸發(fā)器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發(fā)器可以引用其他表中的列。曲阜師范大學計算機科學學院在SQL Server 2005中創(chuàng)建觸發(fā)器的SQL命令是CREATE TRIGGER,其語法格式如下:CREATE TRIGGER trigger_name ON table | view AFT
45、ER | INSTEAD OF INSERT UPDATE DELETE ASBEGIN sql_statement .n END曲阜師范大學計算機科學學院其中,trigger_name是定義的存儲過程名,sql_statement是一組SQL語句,用于描述所定義的存儲過程要執(zhí)行的操作。其他參數的含義如下:table | view是在其上執(zhí)行觸發(fā)器的表或視圖,有時稱為觸發(fā)器表或觸發(fā)器視圖??梢赃x擇是否指定表或視圖的所有者名稱。AFTER指定觸發(fā)器只有在觸發(fā) SQL 語句中指定的所有操作都已成功執(zhí)行后才激發(fā)。所有的引用級聯操作和約束檢查也必須成功完成后,才能執(zhí)行此觸發(fā)器。INSTEAD OF是“
46、代替”的意思,也就是原本直接由SQL Server執(zhí)行的添加、修改、刪除操作,全部替換成由INSTEAD OF觸發(fā)器執(zhí)行。sql_statement 是觸發(fā)器所要執(zhí)行的操作。n是多條SQL語句共同組成觸發(fā)器所要執(zhí)行的操作。曲阜師范大學計算機科學學院L1. ADO.NET簡介簡介ADO.NET是ActiveX Data Objects for the .NET Framework的縮寫,它是為.NET 框架創(chuàng)建的,提供了對Microsoft SQL Server、Oracle等數據源以及通過OLE DB和XML公開的數據源的一致訪問。應用程序可以使用ADO.NET連接到這些數據源,并檢索、操作和
47、更新數據。曲阜師范大學計算機科學學院ADO.NET針對客戶端和數據庫的連接提供了兩種環(huán)境:連接環(huán)境(Connected)與非連接環(huán)境(Disconnected)。1連接環(huán)境連接環(huán)境對于過去的大部分數據訪問接口而言,唯一可用的環(huán)境就是連接環(huán)境。在有連接的環(huán)境中,應用程序與數據庫保持持續(xù)的連接。2非連接環(huán)境非連接環(huán)境隨著Internet的出現,無連接的環(huán)境日益普及。同時隨著手持設備的增加,當與服務器或者數據庫斷開連接時,仍可以通過計算機或手持設備使用應用程序。在非連接環(huán)境中,應用程序首先從數據源中把數據讀入到內存中,在內存中通過數據集(ADO.NET提供的離線數據庫對象模型)構建出一個內存數據庫,
48、在數據集中的數據可以被獨立地復制和更改,需要時可以與數據源中的數據合并。曲阜師范大學計算機科學學院在ADO.NET中數據提供程序(Provider)與數據集(DataSet)是兩個非常重要而又相互關聯的核心組件。它們之間的關系如圖3.7所示。圖3.7 ADO.NET 核心組件曲阜師范大學計算機科學學院1. 數據提供程序數據提供程序Microsoft .NET Framework中包含以下4個.NET數據提供程序: SQL Server .NET 數據提供程序:用于專門連接SQL Server的數據庫(較老的產品不支持),并針對SQL Server 數據庫提供了額外的功能。該數據提供程序包含在S
49、ystem.Data. SqlClient命名空間中。 Oracle .NET 數據提供程序:用于專門連接Oracle的數據庫(較老的產品不支持),并針對Oracle數據庫提供了額外的功能。該數據提供程序包含在System.Data.OracleClient命名空間中。 OLE DB .NET 數據提供程序:用于連接OLE DB數據庫,以兼容早期的數據庫產品。該數據提供程序包含在System.Data.OleDb命名空間中。 ODBC .NET 數據提供程序:用于連接ODBC數據源,通過ODBC數據提供程序可以連接所有ODBC數據提供程序所支持的數據源。該數據提供程序包含在System.Dat
50、a.Odbc命名空間中。曲阜師范大學計算機科學學院每個.NET Framework 數據提供程序包含4種核心對象,其名稱及作用如下:(1)ConnectionConnection建立與特定數據源的連接。在進行數據庫操作之前,首先要建立對數據庫的連接。所有 Connection 對象的基類均為 DbConnection 類。Connection類中最重要的屬性是ConnectionString,該屬性用來指定建立數據庫連接所需要的連接字符串,其中包括如下幾項:服務器名稱、數據源信息及其他登錄信息。ConnectionString的主要參數有: Data Source:設置連接的數據庫服務器名。
51、Initial Catalog:設置連接的數據庫名稱。 User ID:登錄SQL Server的賬號。 Password:登錄SQL Server的密碼。 Connection Timeout:設置SqlConnection對象連接SQL數據庫服務器的超時時間,單位為秒,若在所設置的時間內無法連接數據庫,則返回失敗。默認為15秒。曲阜師范大學計算機科學學院以SQL Server數據庫的連接對象為例,類名為SqlConnection,其創(chuàng)建的語句是:SqlConnection conn = new SqlConnection();設置ConnectionString屬性的語句是:conn.Co
52、nnectionString = Data Source=MySQLServer; / 服務器名user id=sa;password=123456; / 安全信息Initial catalog=Northwind; Integrated Security=False; / 數據庫名及其他參數要更好地掌握Connection對象的使用,還需要了解如表3.7所示的幾個常用方法:方 法說 明Open()打開與數據庫的連接。注意ConnectionString屬性只對連接屬性進行了設置,并不打開與數據庫的連接,必須使用Open()方法打開連接Close()關閉數據庫連接Dispose()調用Clos
53、e()方法關閉與數據庫的連接,并釋放所占用的系統(tǒng)資源表3.7 Connection對象的常用方法曲阜師范大學計算機科學學院(2)CommandCommand是對數據源操作命令的封裝,所有 Command 對象的基類均為 DbCommand 類。對于數據庫來說,這些命令既可以是內聯的SQL語句,也可以是數據庫的存儲過程。由Command生成的對象建立在連接的基礎上,對連接的數據源指定相應的操作。每個.NET Framework數據提供程序包括一個Command對象:OLEDB .NET Framework數據提供程序包括OleDbCommand 對象;SQL Server .NET Framew
54、ork 數據提供程序包括SqlCommand 對象;ODBC .NET Framework 數據提供程序包括 ODBCCommand 對象;Oracle .NET Framework 數據提供程序包括 OracleCommand 對象。以下代碼示例演示如何創(chuàng)建 SqlCommand 對象,以便從 SQL Server 中的 Categories 示例數據庫返回類別列表。string sql = SELECT CategoryID, CategoryName FROM Categories;SqlCommand command1 = new SqlCommand(sql, sqlConnecti
55、on1);曲阜師范大學計算機科學學院參數sql為需執(zhí)行的SQL命令,上述語句將生成一個命令對象command1,對由sqlConnection1連接的數據源指定檢索(SELECT)操作。這兩個參數在創(chuàng)建Command對象時也可以省略不寫,而在創(chuàng)建了Command對象后,通過設置Command對象的CommandText和Connection等屬性來指定。Command對象的主要屬性和方法分別列于表3.8和表3.9中。Command對象的CommandType屬性用于設置命令的類別,可以是存儲過程、表名或SQL語句。當將該屬性值設為CommandType.TableDirect時,要求Comma
56、ndText的值必須是表名,而不能是SQL語句。例如:SqlCommand cmd = new SqlCommand();cmd.CommandText = students;cmd.CommandType = CommandType.TableDirect;cmd.Connection = conn;曲阜師范大學計算機科學學院這段代碼執(zhí)行以后,將返回students表中的所有記錄。它等價于以下代碼:SqlCommand cmd = new SqlCommand();cmd.CommandText = Select * from students;cmd.CommandType = Comma
57、ndType.Text;cmd.Connection = conn;Command對象提供4個執(zhí)行SQL命令的方法:ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()和ExecuteXmlReader(),要注意每個方法的特點。常用的是ExecuteNonQuery()和ExecuteReader()方法,它們分別用于數據庫的更新和查詢操作。注意ExecuteNonQuery()不返回結果集而僅返回受影響的行數,ExecuteReader() 返回DataReader對象。曲阜師范大學計算機科學學院(3)DataReader使用DataReade
58、r可以實現對特定數據源中的數據進行高速、只讀的數據訪問。與數據集(DataSet)不同,DataReader是一個依賴于連接的對象。也就是說,它只能在與數據源保持連接的狀態(tài)下工作。所有 DataReader 對象的基類均為 DbDataReader 類。與Command類似,每個.NET Framework 數據提供程序包括一個 DataReader 對象:OLE DB .NET Framework 數據提供程序包括 OleDbDataReader 對象;SQL Server .NET Framework 數據提供程序包括 SqlDataReader 對象;ODBC .NET Framewor
59、k 數據提供程序包括 OdbcDataReader 對象;Oracle .NET Framework 數據提供程序包括 OracleDataReader 對象。使用 DataReader 檢索數據首先必須創(chuàng)建 Command 對象的實例,然后通過調用 Command的ExecuteReader 方法創(chuàng)建 DataReader,以便從數據源檢索行。以下示例說明如何使用 SqlDataReader,其中 command 代表有效的 SqlCommand 對象。SqlDataReader reader = command.ExecuteReader();曲阜師范大學計算機科學學院以下代碼示例循環(huán)訪問
60、一個 DataReader 對象,并從每行中返回兩列。if (reader.HasRows)/判斷是否有結果返回 while (reader.Read() /依次讀取行 Console.WriteLine(t0t1, reader.GetInt32(0), reader.GetString(1);else Console.WriteLine(No rows returned.);reader.Close();每次使用完 DataReader 對象后都應調用 Close 方法顯式關閉。DataReader對象的常見屬性和方法分別列于表3.10、表3.11中。曲阜師范大學計算機科學學院(4)Dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識產權合作協(xié)議合同
- 預防胎兒黃疸處理方案
- 環(huán)保特種電線電纜相關項目投資計劃書
- 行政人事1月份工作總結
- 關于提高工作效率的倡議文書
- 建設修繕工程施工合同
- 公司股份制改革方案詳解
- 行政崗年終總結述職報告
- 房屋協(xié)議買賣合同
- 個人提供技術服務合同
- 統(tǒng)編版2024一年級下冊語文 8 《夜色》 課件
- 腰椎間盤突出癥課件(共100張課件)
- 《營養(yǎng)配餐》(教學設計)-2024-2025學年北師大版數學六年級上冊
- YYT 0657-2017 醫(yī)用離心機行業(yè)標準
- 《法院執(zhí)行實務》單元三(上)(課堂PPT)課件
- 煤礦防治水中長期規(guī)劃2017—2019
- 幼兒園一日生活中的保教結合(課堂PPT)
- 有害物質培訓教材(ROHS2.0及REACH)
- 德語A1單詞表
- ARL4460 OXSAS曲線制作及學習筆記
- 高三地理二輪專題河流特征
評論
0/150
提交評論