![實驗15簡單數(shù)據(jù)庫應用程序開_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/2/fb2685c4-aab8-4747-82b0-77c78b0828bb/fb2685c4-aab8-4747-82b0-77c78b0828bb1.gif)
![實驗15簡單數(shù)據(jù)庫應用程序開_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/2/fb2685c4-aab8-4747-82b0-77c78b0828bb/fb2685c4-aab8-4747-82b0-77c78b0828bb2.gif)
![實驗15簡單數(shù)據(jù)庫應用程序開_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/2/fb2685c4-aab8-4747-82b0-77c78b0828bb/fb2685c4-aab8-4747-82b0-77c78b0828bb3.gif)
![實驗15簡單數(shù)據(jù)庫應用程序開_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/2/fb2685c4-aab8-4747-82b0-77c78b0828bb/fb2685c4-aab8-4747-82b0-77c78b0828bb4.gif)
![實驗15簡單數(shù)據(jù)庫應用程序開_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/2/fb2685c4-aab8-4747-82b0-77c78b0828bb/fb2685c4-aab8-4747-82b0-77c78b0828bb5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實驗15 簡單數(shù)據(jù)庫應用程序開發(fā)一、目的與要求:1) 了解實際數(shù)據(jù)庫應用系統(tǒng)的開發(fā)過程;2) 掌握ODBC數(shù)據(jù)源的建立方法;3) 掌握在不同開發(fā)工具中使用ODBC或ADO等技術連接數(shù)據(jù)庫的基本方法;4) 初步掌握數(shù)據(jù)庫應用程序的基本方法;5) 開發(fā)一個簡單的數(shù)據(jù)庫應用程序。二、背景知識用戶與DBMS交互,一種方式是直接借助DBMS系統(tǒng),采用SQL命令進行,另一種方式是用戶通過數(shù)據(jù)庫應用程序與DBMS交互,對非計算機專業(yè)用戶來說,這是最簡單的方式。數(shù)據(jù)庫應用程序通過一定方式與數(shù)據(jù)庫建立連接,然后與DBMS建立交互。數(shù)據(jù)庫應用程序的開發(fā)是信息系統(tǒng)建設的重要組成部分。數(shù)據(jù)庫應用程序與DBMS可以通過
2、一系列的應用程序接口 (Application Programming Interface, API)進行通信,通過API調(diào)用傳遞SQL語句給DBMS,并使用API調(diào)用檢索結(jié)果。常用的數(shù)據(jù)庫應用編程接口有ODBC、JDBC、ADO、ADO.NET和OLE DB等。目前數(shù)據(jù)庫應用系統(tǒng)開發(fā)中通常使用兩種體系結(jié)構即客戶機/服務器(Client/Server, C/S)結(jié)構和瀏覽器/服務器(Browser/Server, B/S)結(jié)構。C/S結(jié)構的服務器上安裝數(shù)據(jù)庫及數(shù)據(jù)庫管理系統(tǒng),用于執(zhí)行DBMS功能,稱為數(shù)據(jù)庫服務器;而客戶機則安裝DBMS的外圍應用開發(fā)工具即客戶端應用程序,支持用戶的應用,稱為客
3、戶機。一般系統(tǒng)由一臺數(shù)據(jù)庫服務器和多臺客戶機組成。B/S結(jié)構是隨著數(shù)據(jù)庫應用系統(tǒng)規(guī)模的擴大和Internet的迅速普及而產(chǎn)生的體系結(jié)構,在B/S結(jié)構中,客戶機上只要安裝瀏覽器如Internet ExplORer或Netscape NavigatOR,數(shù)據(jù)庫服務器上安裝DBMS和數(shù)據(jù)庫,用戶界面完全通過WWW瀏覽器實現(xiàn),應用邏輯在Web服務器端實現(xiàn)。瀏覽器通過Web服務器同數(shù)據(jù)庫進行數(shù)據(jù)交互。數(shù)據(jù)庫應用系統(tǒng)的體系結(jié)構不同,其開發(fā)工具也有所不同。目前比較主流的C/S結(jié)構前端開發(fā)工具有Delphi、Visual Basic、Visual Basic.NET、Visual C+、JAVA和PowerB
4、uilder等。而B/S結(jié)構的開發(fā)工具有ASP、ASP.NET、JSP和PHP等。在開發(fā)工具中通常可以通過API如ODBC、JDBC、ADO、ADO.NET和OLE DB等接口建立與后臺數(shù)據(jù)庫的連接。三、實驗內(nèi)容開發(fā)一個簡單的數(shù)據(jù)庫應用系統(tǒng),針對EDUC數(shù)據(jù)庫,開發(fā)其簡單的應用程序界面,能夠?qū)ζ渲械谋頂?shù)據(jù)進行操作。系統(tǒng)采用C/S體系結(jié)構,客戶端負責提供表達邏輯、顯示用戶界面信息、訪問數(shù)據(jù)庫服務器,自選一種開發(fā)工具(Visual C+,Visual Basic或Delphi);服務器端則用于提供數(shù)據(jù)服務,采用SQL Server2005作為數(shù)據(jù)庫管理系統(tǒng)。四、實驗步驟選擇的開發(fā)工具不同,應用程序
5、與數(shù)據(jù)庫的連接方式及應用程序的編寫方式就不同,下面列舉在Visual C+工具下簡單應用界面的設計方法。1. 建立ODBC數(shù)據(jù)源在介紹具體方案之前,先為EDUC數(shù)據(jù)庫建立ODBC數(shù)據(jù)源。方法如下:(1)在Windows XP中選擇“開始”|“控制面板”|“管理工具”命令,出現(xiàn)如圖15-1所示的“管理工具”窗口。 圖15-1 “管理工具”窗口 圖15-2 “系統(tǒng)DSN”選項卡窗口(2)雙擊“ODBC數(shù)據(jù)源”,打開“ODBC數(shù)據(jù)源管理器”對話框;選擇“系統(tǒng)DSN”選項卡,如圖15-2所示。(3)單擊“添加”按鈕,出現(xiàn)如圖15-3所示的對話框;選擇SQL Server選項,單擊“完成”按鈕。(4)出
6、現(xiàn)“創(chuàng)建到SQL Server的新數(shù)據(jù)源”對話框,如圖15-4所示;在“名稱”文本框中輸入XSGL,單擊“下一步”按鈕。 圖15-3 “創(chuàng)建新數(shù)據(jù)源”對話框 圖15-4 “創(chuàng)建到SQL Server的新數(shù)據(jù)源”對話框(5)出現(xiàn)連接SQL Server認證的輸入框,選擇“使用用戶輸入登錄ID和密碼的SQL Server驗證”單選按鈕,在“登錄ID”文本框中輸入sa,在“密碼”文本框中輸入服務器登錄密碼,單擊“下一步”按鈕,進入選擇數(shù)據(jù)庫的對話框。(6)選中“更改默認的數(shù)據(jù)庫為”復選框,從其下方的下拉列表框中選擇數(shù)據(jù)庫為XSGL,不更改其他默認設置。設置完畢后,單擊“下一步”按鈕,進入設置ODBC
7、對話框,如圖15-5所示。保持默認選項,單擊“完成”按鈕,(7)出現(xiàn)ODBC配置的確認對話框,如圖15-6所示。單擊“測試數(shù)據(jù)源”按鈕,即彈出一個關于測試結(jié)果對話框,單擊“確定”按鈕。如果測試成功,則表示ODBC數(shù)據(jù)源educ已經(jīng)建成。 圖15-5 “創(chuàng)建到SQL Server的新數(shù)據(jù)源”對話框 圖15-6 ODBC 配置確認對話框2. 建立數(shù)據(jù)庫應用程序數(shù)據(jù)源建立后,可進行簡單數(shù)據(jù)庫應用程序的編寫。選擇應用程序開發(fā)工具,然后實現(xiàn)如下功能:(1)系統(tǒng)歡迎界面;(2)登錄界面;(3)應用程序主界面(菜單、工具欄等);(4)應用程序的其它界面如數(shù)據(jù)維護、數(shù)據(jù)查詢、數(shù)據(jù)統(tǒng)計等;(5)報表設計;.對于
8、數(shù)據(jù)訪問界面,一般的步驟如下:(1) 建立工程項目;(2) 界面窗口設計;添加數(shù)據(jù)庫連接控件。(3) 添加數(shù)據(jù)顯示控件。(4) 修改控件屬性,把控件和數(shù)據(jù)庫綁定。(5) 利用控件直接操作數(shù)據(jù)庫。(6) 退出宿主語言后,在DBMS環(huán)境下觀察數(shù)據(jù)庫的變化。(7) 在開發(fā)工具編程環(huán)境下為事件增加程序代碼,實現(xiàn)對數(shù)據(jù)庫的操縱。具體方法請參閱相關開發(fā)工具的參考書。下面分別介紹幾種不同開發(fā)工具下與數(shù)據(jù)庫連接的方法和簡單應用程序界面設計的基本方法。包括增加新的記錄、刪除記錄、修改記錄。方案一:采用Visual C+作為前端開發(fā)工具在VC下開發(fā)基于ADO的數(shù)據(jù)庫要稍微復雜一些,本次開發(fā)基于c/s體系結(jié)構的學生
9、選課管理系統(tǒng),采用三層模式進行開發(fā)。即數(shù)據(jù)層,業(yè)務層,界面層。下面關于開發(fā)的一些基本步驟作一個簡單介紹:(1) 導入ADO動態(tài)鏈接庫msado15.dll到“StdAfx.h”文件中,以便工程編譯完后,自動生成對ADO對象的封裝:添加步驟:()根據(jù)安裝系統(tǒng)盤的路徑,查找到c:program filescommon filessystemadomsado15.dll文件()在“StdAfx.h”文件中,添加一條語句:#impORt "c:program filescommon filessystemadomsado15.dll" no_namespace rename(&qu
10、ot;EOF","adoEOF")說明:(A)重命名EOF是必要的,因為典型的VC應用都已經(jīng)定義了EOF作為常數(shù)1。(B) ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C使用的COM vtable接口。當使用impORt指令時,在運行時Visual C需要從ADO DLL中讀取這個類型庫,并以此創(chuàng)建一組C頭文件。這些頭文件具有.tli 和.tlh擴展名,讀者可以在項目的DEBUG目錄下找到這兩個文件。在C程序代碼中調(diào)用的ADO類要在這些文件中定義。 (2)建立數(shù)據(jù)層類,實現(xiàn)
11、與數(shù)據(jù)庫的連接、數(shù)據(jù)插入、刪除、查詢、數(shù)據(jù)更新操作。class ADOConn public:_ConnectionPtr m_pConnection; /添加一個指向Connection對象的指針_RecORdsetPtr m_pRecORdset; /添加一個指向RecORdset對象的指針/ 定義各種方法,實現(xiàn)數(shù)據(jù)庫的連接,數(shù)據(jù)的查詢,數(shù)據(jù)的增刪改ADOConn();virtual ADOConn();void OnInitADOConn(); / 初始化連接_RecORdsetPtr& GetRecORdSet(_bstr_t bstrSQL); / 執(zhí)行查詢BOOL Exec
12、uteSQL(_bstr_t bstrSQL); / 執(zhí)行增刪改SQL語句,Insert Update _variant_tvoid ExitConnect(); /退出數(shù)據(jù)庫連接;ADOConn:ADOConn()ADOConn:ADOConn()/ 初始化數(shù)據(jù)庫連接方法void ADOConn:OnInitADOConn()/ 初始化OLE/COM庫環(huán)境, 由于ADO庫是一組COM動態(tài)庫,應用程序在調(diào)用ADO前,必須先初始化OLE/COM庫環(huán)境,以便使調(diào)用COM的API工作正常。:CoInitialize(NULL); trym_pConnection.CreateInstance(&qu
13、ot;ADODB.Connection"); / 創(chuàng)建Connection對象/ 設置連接字符串,提供DBMS名稱,數(shù)據(jù)庫服務器所在位置,數(shù)據(jù)庫的名稱,用戶名,口令_bstr_t strConnect = "driver=SQL Server; Server=; DATABASE=XSGL; UID=sa;PWD= ;"m_pConnection->Open(strConnect,"","",adModeUnknown);/ 捕捉異常catch(_com_errOR e)AfxMessageBox(e
14、.Description(); / 對數(shù)據(jù)庫執(zhí)行查詢的方法_RecORdsetPtr& ADOConn:GetRecORdSet(_bstr_t bstrSQL) /將查詢表達式作為參數(shù)傳遞try/ 連接數(shù)據(jù)庫,如果Connection對象為空,則重新連接數(shù)據(jù)庫if(m_pConnection=NULL)OnInitADOConn();/ 創(chuàng)建記錄集對象m_pRecORdset.CreateInstance("ADODB.RecORdset");/ 取得表中的記錄m_pRecORdset->Open(bstrSQL,m_pConnection.GetInter
15、facePtr(),adOpenDynamic,adLockOptimistic,adCmdText);/ 捕捉異常catch(_com_errOR e)AfxMessageBox(e.Description(); / 返回記錄集指針return m_pRecORdset; / 對數(shù)據(jù)庫執(zhí)行插入、刪除、數(shù)據(jù)更新操作SQL命令的方法BOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL) /將SQL命令作為參數(shù)傳遞tryif(m_pConnection = NULL)OnInitADOConn();m_pConnection->Execute(bstrSQL,NUL
16、L,adCmdText);return true;catch(_com_errOR e)AfxMessageBox(e.Description();return false;void ADOConn:ExitConnect()/ 關閉記錄集和連接if (m_pRecORdset != NULL)m_pRecORdset->Close();m_pConnection->Close();/ 釋放環(huán)境:CoUninitialize();(3)建立業(yè)務層:在XSGL信息系統(tǒng)中,學生表有插入、刪除、數(shù)據(jù)更新這樣的業(yè)務需求,因此,對數(shù)據(jù)庫中的課程表建立一個課程業(yè)務類,封裝相應的方法,以保證數(shù)據(jù)
17、能夠正確操作。同樣,課程表與選課表也有類似的業(yè)務需求,也需要建立相應的業(yè)務類。class course public:CString cno,cname,tname,room; /對應表中的字段int credit; /對應表中的字段course();virtual course();void sql_insert();void sql_delete(CString icno);void sql_update(CString icno);/按課程編號,判斷是否存在相同紀錄int havecno(CString icno);#include "ADOConn.h"course
18、:course() course:course() /課程業(yè)務類插入數(shù)據(jù)的接口,在此接口中,調(diào)用數(shù)據(jù)層類,將數(shù)據(jù)插入到數(shù)據(jù)庫中void course:sql_insert()ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;CString tempcredit; /_bstr_t中只支持字符串的相加操作,所以必須把數(shù)值轉(zhuǎn)換成字符串tempcredit.FORmat("%f", credit );sqltemp="insert into course values('"+cno+&quo
19、t;','"+cname+"','"+tname+ "',"+ tempcredit +",'"+ room +"')"adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/課程業(yè)務類刪除數(shù)據(jù)的接口,在此接口中,調(diào)用數(shù)據(jù)層類,將數(shù)據(jù)從數(shù)據(jù)庫中刪除void course:sql_delete(CString icno)ADOConn adoconn;adoconn.OnInitADOConn();_bst
20、r_t sqltemp;sqltemp="delete from course where cno='"+icno+"'"adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/課程業(yè)務類更新數(shù)據(jù)的接口,在此接口中,調(diào)用數(shù)據(jù)層類,更新數(shù)據(jù)庫中的數(shù)據(jù)void course:sql_update(CString icno)ADOConn adoconn;adoconn.OnInitADOConn();_bstr_t sqltemp;sqltemp="update course set c
21、name='"+cname+"',tname='"+tname+"' where cno='"+icno+"'"adoconn.ExecuteSQL(sqltemp);adoconn.ExitConnect();/按課程編號,判斷是否存在相同紀錄int course:havecno(CString icno)/根據(jù)當前用戶輸入的課程號,判斷能否插入當前記錄;如果存在,重新輸入,否則插入ADOConn adoconn;_bstr_t sql;sql="select *
22、from course where cno='"+icno+"'"_RecORdsetPtr m_precORdset;m_precORdset=adoconn.GetRecORdSet(sql);if(m_precORdset->adoEOF)return -1;else return 1;adoconn.ExitConnect();(4)建立表示層:針對業(yè)務需求,建立相應的窗體,如:課程(學生、選課)輸入、修改、刪除窗體,這類窗體和數(shù)據(jù)庫的數(shù)據(jù)傳遞,通過相應的業(yè)務類實現(xiàn),所有信息的查詢窗體,可以通過DataGrid控件較輕松地實現(xiàn)。()添
23、加課程記錄界面的實現(xiàn)(A)首先建立如圖15-22所示的對話窗圖15-22 添加課程紀錄界面(B)在與對話窗對應的類interface_course中,添加如下所示的成員變量:CStringm_cno;CStringm_cname;CStringm_cteacher;intm_credit;CStringm_room;/在插入控件響應函數(shù)中,添加如下的代碼:void interface_course:OnInsert() UpdateData(1); /獲得用戶界面輸入的信息 course temp; /定義課程類的對象if(m_cno="")MessageBox("
24、;課程編號不能為空");return;if(m_cname="")MessageBox("課程名不能為空");return; if(m_cteacher="")MessageBox("任課教師不能為空");return;if(m_credit=0)MessageBox("學分不能為空");return; if(m_credit>5 && m_credit<0)MessageBox("學分必須在0.5-5的范圍內(nèi)");return;if(m_room="")MessageBox("教室不能為空");return;if(temp.havecno(m_cno)=1)MessageBox("該課程編號已存在");return;o=m_cno;ame=m_cname;temp.credit=m_credit;temp.tname=m_cteacher;temp.room=m_room;temp.sql_insert(); /調(diào)用課程類對象的插入函數(shù),將表示層數(shù)據(jù)傳送到數(shù)據(jù)庫中if(temp.havecno(m_cn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)展廳形象裝修合同
- 地質(zhì)災害防治爆破運輸合同
- 水運公司船員聘用合同樣本
- 北京市裝修監(jiān)理合同
- 人力資源居間合同模板
- 辦公室裝修合同安全責任糾紛調(diào)解示范文本2025
- 農(nóng)業(yè)氣象服務實施方案
- 起重機買賣合同協(xié)議書
- 電子競技賽事組織運營合同
- 三農(nóng)服務標準化管理方案
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗方法(示差-升溫法)
- 胸腔積液護理查房-范本模板
- 水土保持方案中沉沙池的布設技術
- 安全生產(chǎn)技術規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進本土項目化設計-讀《PBL項目化學習設計》有感
- 《網(wǎng)店運營與管理》整本書電子教案全套教學教案
- 教師信息技術能力提升培訓課件希沃的課件
- 高端公寓住宅項目營銷策劃方案(項目定位 發(fā)展建議)
- 執(zhí)業(yè)獸醫(yī)師聘用協(xié)議(合同)書
評論
0/150
提交評論