




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、An Introduction to Database System溫浩宇溫浩宇數據庫原理與應用數據庫原理與應用 第八章第八章 數據庫編程數據庫編程An Introduction to Database System第八章第八章 數據庫編程數據庫編程n8.1 嵌入式嵌入式 SQL(Embedded SQL)n8.2 存儲過程n8.3 ODBC編程(JDBC、ADO.Net)n8.4 C#2008編程介紹編程介紹 (選講)(選講)An Introduction to Database System8.1 8.1 嵌入式嵌入式 SQLSQLnSQL語言提供了兩種不同的使用方式:n交互式n嵌入式n為
2、什么要引入嵌入式SQLnSQL語言是非過程性語言n事務處理應用需要高級語言n這兩種方式細節上有差別,在程序設計時,SQL語句要做某些必要的擴充An Introduction to Database System8.1.1 嵌入式嵌入式SQL的處理過程的處理過程An Introduction to Database System8.1.1 嵌入式嵌入式SQL的處理過程的處理過程n為了區分SQL語句與主語言語句,需要: n前綴:EXEC SQLn 結束標志:隨主語言的不同而不同n以C為主語言的嵌入式SQL語句的一般形式 EXEC SQL ;例:EXEC SQL DROP TABLE Student
3、;An Introduction to Database System8.1.2 嵌入式嵌入式SQL與主語言的通信與主語言的通信n將SQL嵌入到高級語言中混合編程,程序中會含有兩種不同計算模型的語句lSQL語句描述性的面向集合的語句負責操縱數據庫l高級語言語句程序性的面向記錄的語句負責控制程序流程l它們之間應該如何通信?An Introduction to Database System8.1.2 嵌入式嵌入式SQL與主語言的通信與主語言的通信1. SQL通信區向主語言傳遞SQL語句的執行狀態信息主語言能夠據此控制程序流程2. 主變量 1)主語言向SQL語句提供參數 2)將SQL語句查詢數據庫
4、的結果交主語言進一步處理3. 游標解決集合性操作語言與過程性操作語言的不匹配An Introduction to Database System1. SQL通信區通信區nSQLCA: SQL Communication AreanSQLCA是一個數據結構nSQLCA的用途nSQL語句執行后,DBMS反饋給應用程序信息n 描述系統當前工作狀態n 描述運行環境n這些信息將送到SQL通信區SQLCA中n應用程序從SQLCA中取出這些狀態信息,據此決定接下來執行的語句An Introduction to Database SystemSQLCA的內容的內容n 與所執行的SQL語句有關n 與該SQL語句
5、的執行情況有關例如:在執行刪除語句DELETE后,不同的執行情況,SQLCA中有不同的信息:n 違反數據保護規則,操作拒絕n 沒有滿足條件的行,一行也沒有刪除n 成功刪除,并有刪除的行數n 無條件刪除警告信息n 由于各種原因,執行出錯An Introduction to Database SystemSQLCA的使用方法的使用方法n定義SQLCAn 用EXEC SQL INCLUDE SQLCA加以定義n使用SQLCAnSQLCA中有一個存放每次執行SQL語句后返回代碼的變量SQLCODEn如果SQLCODE等于預定義的常量SUCCESS,則表示SQL語句成功,否則表示出錯n應用程序每執行完一
6、條SQL 語句之后都應該測試一下SQLCODE的值,以了解該SQL語句執行情況并做相應處理An Introduction to Database System2. 主變量主變量 n什么是主變量n嵌入式SQL語句中可以使用主語言的程序變量來輸入或輸出數據n在SQL語句中使用的主語言程序變量主語言程序變量簡稱為主變量(Host Variable)An Introduction to Database System主變量(續)主變量(續) n主變量的類型n輸入主變量n由應用程序對其賦值,SQL語句引用n輸出主變量n由SQL語句賦值或設置狀態信息,返回給應用程序n一個主變量有可能既是輸入主變量又是輸出
7、主變量An Introduction to Database System主變量(續)主變量(續) n主變量的用途n輸入主變量n 指定向數據庫中插入的數據n 將數據庫中的數據修改為指定值n 指定執行的操作n 指定WHERE子句或HAVING子句中的條件n輸出主變量n 獲取SQL語句的結果數據n 獲取SQL語句的執行狀態An Introduction to Database System主變量(續)主變量(續) n在SQL語句中使用主變量的方法n1) 說明主變量BEGIN DECLARE SECTION. . (說明主變量).END DECLARE SECTIONAn Introduction
8、to Database System主變量(續)主變量(續) n2) 使用主變量n說明之后的主變量可以在SQL語句中任何一個能夠使用表達式的地方出現n為了與數據庫對象名(表名、視圖名、列名等)區別,SQL語句中的主變量名前要加冒號(:)作為標志An Introduction to Database System主變量(續)主變量(續) n在SQL語句之外(主語言語句中)使用主變量的方法n可以直接引用,不必加冒號An Introduction to Database System3. 游標(游標(cursor)n為什么要使用游標n SQL語言與主語言具有不同數據處理方式nSQL語言是面向集合的,
9、一條SQL語句原則上可以產生或處理多條記錄An Introduction to Database System 游標(續)游標(續)n主語言是面向記錄的,一組主變量一次只能存放一條記錄n僅使用主變量并不能完全滿足SQL語句向應用程序輸出數據的要求n嵌入式SQL引入了游標的概念,用來協調這兩種不同的處理方式An Introduction to Database System 游標(續)游標(續)n 什么是游標n游標是系統為用戶開設的一個數據緩沖區,存放SQL語句的執行結果n每個游標區都有一個名字n用戶可以用SQL語句逐一從游標中獲取記錄,并賦給主變量,交由主語言進一步處理游標應用舉例游標應用舉例
10、 (遍歷遍歷20歲以下學生歲以下學生)declareSnoCHAR(9)declare SnameCHAR(20)declare SsexCHAR(2)declare SageSMALLINTDECLARE SX CURSOR FORSELECT Sno, Sname, Sage, SsexFROM Student;open SXfetch next from SX into Sno, Sname, Sage, Ssexwhile FETCH_STATUS=0begin if(Sage20) beginprintSnoprintSnameprintSageprintSsex end fetch
11、 next from SX into Sno, Sname, Sage, Ssexendclose SXdeallocate SXAn Introduction to Database SystemAn Introduction to Database System8.1.2 嵌入式嵌入式SQL與主語言的通信與主語言的通信n SQL語句用主變量從主語言中接收執行參數,操縱數據庫nSQL語句的執行狀態由DBMS送至SQLCA中n主語言程序從SQLCA中取出狀態信息,據此決定下一步操作n如果SQL語句從數據庫中成功地檢索出數據,則通過主變量傳給主語言做進一步處理nSQL語言和主語言的不同數據處理方
12、式通過游標來協調An Introduction to Database System4、建立和關閉數據庫連接n建立數據庫連接 EXEC SQL CONNECT TO target AS connection-name USER user-name; target是要連接的數據庫服務器:n 常見的服務器標識串,如:n 包含服務器標識的SQL串常量n DEFAULT connect-name是可選的連接名,連接必須是一個有效的標識符 在整個程序內只有一個連接時可以不指定連接名n關閉數據庫連接 EXEC SQL DISCONNECT connection;n程序運行過程中可以修改當前連接: EXEC
13、 SQL SET CONNECTION connection-name | DEFAULT;An Introduction to Database System5、程序實例例1依次檢查某個系的學生記錄,交互式更新某些學生年齡。EXEC SQL BEGIN DECLARE SECTION; /*主變量說明開始*/char deptname64;char HSno64;char HSname64;char HSsex64;int HSage;int NEWAGE;EXEC SQL END DECLARE SECTION; /*主變量說明結束*/long SQLCODE;EXEC SQL INCLU
14、DE sqlca; /*定義SQL通信區*/ An Introduction to Database System5、程序實例(注意主變量用法)int main(void) /*C語言主程序開始*/int count = 0;char yn; /*變量yn代表yes或no*/printf(Please choose the department name(CS/MA/IS): );scanf(%s, deptname); /*為主變量deptname賦值*/EXEC SQL CONNECT TO TESTlocalhost:54321 USERSYSTEM /MANAGER; /*連接數據庫T
15、EST*/EXEC SQL DECLARE SX CURSOR FOR /*定義游標*/SELECT Sno, Sname, Ssex, Sage /*SX對應語句的執行結果*/FROM StudentWHERE SDept = :deptname;EXEC SQL OPEN SX; /*打開游標SX便指向查詢結果的第一行*/for ( ; ; ) /*用循環結構逐條處理結果集中的記錄*/EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;/*推進游標,將當前數據放入主變量*/注意:注意:完整代碼見P240241An Introductio
16、n to Database System8.2 存儲過程存儲過程 ( (前面我們介紹過前面我們介紹過) )n存儲過程:由T-SQL語句書寫的過程,經編譯和優化后存儲在數據庫服務器中,使用時只要調用即可。n一、存儲過程的優點:n1. 運行效率高n2. 降低了客戶機和服務器之間的通信量n3. 方便實施企業規則An Introduction to Database System8.3 ODBC編程介紹ODBC 3.0 標準提供了76個函數接口:分配和釋放環境句柄、連接句柄、語句句柄;連接函數(SQLDriverconnect等);與信息相關的函數(如獲取描述信息函數SQLGetinfo、SQLGet
17、Fuction);事務處理函數(如SQLEndTran);執行相關函數(SQLExecdirect、SQLExecute等);編目函數,ODBC 3.0提供了11個編目函數如SQLTables、SQLColumn等,應用程序可以通過對編目函數的調用來獲取數據字典的信息如權限、表結構等.An Introduction to Database SystemODBC的工作流程 ODBC ODBC數據源數據源n數據源:數據源是驅動程序與數據庫之間的橋梁,用于表達一個ODBC驅動程序和DBMS特殊連接的命名。在連接中,用數據源名代表用戶名、服務器名和所連接的數據庫名等。可以將數據源名看成是與一個具體數據
18、庫建立的連接。在開發通過ODBC訪問數據庫的應用程序時,首先需要建立數據源。ODBC數據源配置l選擇添加數據源l選擇不同的數據源,這里使用的是用戶數據源ODBC數據源配置l選擇新數據源的驅動程序,這里選擇SQL ServerODBC數據源配置l輸入數據源的名稱,描述和使用的SQL Server服務器,一般情況下,服務器都是本地的,選擇localODBC數據源配置l選擇登錄方式,一般選擇使用用戶登錄ID和密碼的方式,在下方輸入登錄的密碼,為了以后使用方便,一般使用sa帳號和相應密碼。ODBC數據源配置l一般要更改登錄到數據庫服務器后,默認的數據庫。由于實驗中主要使用pubs數據庫,所以做以上更改
19、。ODBC數據源配置l可以看到,在用戶數據源中增加了一個新的數據源,lsyAn Introduction to Database SystemODBC API編程編程VC+6.0例子代碼例子代碼/本程序用本程序用VC+6.0編譯執行編譯執行#include #include #include #include #include #include int main()RETCODE rcode;HENV henv;HDBChdbc;HSTMThstmt;charszBuf100;SDWORDsdODataLength;rcode=SQLAllocEnv(&henv);An Introdu
20、ction to Database SystemODBC API編程編程VC+6.0例子代碼例子代碼if (rcode=SQL_SUCCESS)rcode=SQLAllocConnect(henv,&hdbc);if (rcode=SQL_SUCCESS) /注意:必須先手工建好注意:必須先手工建好ODBC數據源數據源- SQLODBCrcode=SQLConnect(hdbc,(SQLCHAR *) SQLODBC,SQL_NTS, (SQLCHAR *) sa,SQL_NTS, (SQLCHAR *) sa,SQL_NTS);if (rcode = SQL_SUCCESS | rc
21、ode = SQL_SUCCESS_WITH_INFO) rcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); if (rcode=SQL_SUCCESS) rcode=SQLAllocStmt(hdbc,&hstmt); if (rcode=SQL_SUCCESS) rcode=SQLExecDirect(hstmt, (SQLCHAR *)SELECT * FROM student,SQL_NTS);if (rcode=SQL_SUCCESS)int row=0;An Introduction to Database
22、SystemODBC API編程編程VC+6.0例子代碼例子代碼for (rcode=SQLFetch(hstmt);rcode=SQL_SUCCESS;rcode=SQLFetch(hstmt)for (int i=0;i5;i+) SQLGetData(hstmt,i+1,SQL_C_CHAR,szBuf,100,&sdODataLength);printf(%sn,szBuf);printf(%sn,-);row+;SQLFreeStmt(hstmt,SQL_DROP);SQLDisconnect(hdbc); SQLFreeConnect(hdbc);SQLFreeEnv(he
23、nv);return 0;An Introduction to Database System8.4 C#2008編程編程介紹介紹 F開發步驟1.打開C#2008,文件新建項目 Windows應用程序 (項項目名稱用學號目名稱用學號),會自動生成主窗體Form1將“Form1.cs” 改為“MainForm.cs”2.主窗體設計u添加菜單控件及菜單項u主窗體“ISMdiContainer”屬性改為“TRUE”,名稱“Name”由 “Form1”改為“MainForm”,標題“Text”改為“教學管理系統”,“StartPosition”改為屏幕中心“CenterScreen”u菜單欄激活及調用
24、其他窗體3.添加學生窗體修改相關屬性添加各種所需控件編寫源代碼(后面課程詳細后面課程詳細介紹處理介紹處理代碼代碼)在主窗體中調用8.4 C#2008編程介紹編程介紹 nC#開發簡單數據庫應用系統介紹n1、界面設計(窗口、菜單、控件)n2、查詢代碼n3、插入代碼n4、修改代碼n5、刪除代碼 查詢界面例子查詢界面例子l注意:要介紹清楚查詢窗體中各控件的作用及界面設計方法。C#中的數據查詢代碼中的數據查詢代碼private void Select_Click(object sender, EventArgs e) if (SnoTxt.Text.Trim().Length != 0) SqlConnection sqlcon = new SqlConnection(server=localhost;uid=sa;pwd=;database=Study); string strSQL = select s_no 學號,class_no 班級號,s_name 姓名,s_sex 性別,s_birthday 出生年月 from student ; strSQL = strSQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年文化遺產保護與管理考試題及答案
- spijava面試題及答案
- 公共政策與社會穩定的關系探討試題及答案
- 城市犯罪防控政策的有效性評估試題及答案
- 軟考網絡工程師復習計劃與試題及答案
- 新考綱適應策略2025年信息系統項目管理師試題及答案
- 西方政治制度對國際關系的影響試題及答案
- 公共政策中的風險管理策略試題及答案
- 公共政策實施中的風險管理試題及答案
- 如何提升信息系統項目管理師考試中的獨立思考能力試題及答案
- 電場電場強度
- 國開可編程控制器應用形考實訓任務二
- 白酒質量要求 第4部分:醬香型白酒
- JT-T-329-2010公路橋梁預應力鋼絞線用錨具、夾具和連接器
- 湖北武漢市2024屆高三沖刺模擬數學試卷含解析
- 2024年浙江臺州椒江區公安局警務輔助人員招聘筆試參考題庫附帶答案詳解
- 廣東省廣州市天河區2024年八年級下冊數學期末考試試題含解析
- 土木工程專業畢業答辯常問問題
- 紅色大氣商務企業啟動會企業啟動儀式
- 2024年新改版蘇教版六年級下冊科學全冊復習資料
- 手機制造行業未來五至十年行業分析
評論
0/150
提交評論