MySQL云數據庫應用與實踐 課件 ch08-數據庫應用程序開發_第1頁
MySQL云數據庫應用與實踐 課件 ch08-數據庫應用程序開發_第2頁
MySQL云數據庫應用與實踐 課件 ch08-數據庫應用程序開發_第3頁
MySQL云數據庫應用與實踐 課件 ch08-數據庫應用程序開發_第4頁
MySQL云數據庫應用與實踐 課件 ch08-數據庫應用程序開發_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第八章

數據庫應用程序開發Database西北工業大學NorthwesternPolytechnicalUniversity數據庫目錄8.1

實戰目標與準備8.2數據庫應用軟件開發概述8.3

JDBC編程實戰8.4ODBC編程實戰8.5數據庫連接池應用實戰8.6ADO.NET——Window窗口程序實戰8.7ORM技術——基于Django框架的Web程序實戰8.8其他數據庫訪問方法實戰8.1實戰目標與準備實戰目標本章目標是掌握數據庫應用程序中的數據庫訪問技術,期望讀者能獨立開發一個基本的數據庫應用程序,特別是其中的數據庫訪問部分。實戰準備本機的應用程序開發,需要根據自己選擇則的編程語言提前安裝好以下軟件:JDBC:JAVA開發環境ODBC:C++或者C#開發環境或者Python開發環境其他訪問數據庫方式:C++或者Python開發環境8.2數據庫應用軟件開發概述8.3JDBC類名路徑備注驅動程序類java.sql.Driver由各數據庫廠商提供驅動程序管理類java.sql.DriverManager作用于應用程序與驅動程序之間數據庫連接類java.sql.Connection用于建立與指定數據庫的連接靜態SQL語句執行類java.sql.Statement用于執行靜態SQL語句并返回結果動態SQL語句執行類java.sql.PreparedStatement用于執行含參SQL語句并返回結果存儲過程語句執行類java.sql.CallableStatement用于執行存儲過程語句并返回結果結果集處理類java.sql.ResultSet用于檢索結果集中的數據JDBC常用類JDBC開發涉及到的所有類都包含在java.sql包中不同的JDBC版本接口名和使用略有差異8.3JDBCJDBC操作數據庫的基本工作流程步驟1:加載驅動程序步驟2:建立與數據庫的連接定義連接的URL利用生成的URL建立與數據庫的連接步驟3:執行SQL語句創建語句執行類對象執行SQL語句,可以通過executeQuery、executeUpdate、execute三種方式執行。步驟4:處理結果集步驟5:釋放資源8.3JDBCConnectionconn=null;//mysql8.0Stringdriver="com.mysql.cj.jdbc.Driver";//驅動Stringurl="jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC";//URL//mysql5.7//Stringdriver="com.mysql.jdbc.Driver";//StringURL="jdbc:mysql://localhost:3306/student";

Stringuser="root";//用戶名Stringpasswd="*****";//密碼

try{Class.forName(driver);conn=DriverManager.getConnection(url,user,passwd);}catch(Exceptione){ e.printStackTrace();}8.3JDBCtry{ stat=conn.createStatement(); ret=stat.executeQuery("select*froms");

while(ret.next()) { for(inti=1;i<=4;i++) System.out.print(ret.getString(i)+"");

System.out.println(""); } conn.close();}catch(SQLExceptione){ e.printStackTrace();}8.4ODBCODBC的概念微軟開發的用于連接各種關系型數據庫的函數庫,以動態鏈接庫的形式提供給程序使用,其目的是給出統一的編程接口,從而簡化數據庫應用程序的編寫。ODBC數據庫應用程序驅動程序管理器(DLL)SQLServer驅動程序Oracle驅動程序Foxpro驅動程序(DLL)Sybase驅動程序DB2驅動程序SQLServer數據源Oracle數據源Foxpro數據源Sybase數據源DB2數據源DBDBDBDBDB8.4ODBCODBC數據源的配置手工配置:控制面板-〉管理工具->ODBC數據源(64位)或32位(需要事先安裝該MySQL的ODBC驅動)8.4ODBC——C++調用ODBCCdatabasedatabase;CrecordsetrecordSet;if(!database.IsOpen()){database.Open(NULL,FALSE,FALSE,_T("ODBC;DSN=student_mysql64;UID=root;PWD=123456"));recordSet.m_pDatabase=&database;}CStringstrSQL;strSQL.Format("select*froms");recordSet.Open(CRecordset::forwardOnly,strSQL);for(inti=0;i<recordSet.GetRecordCount();i++){CStringtemp;recordSet.GetFieldValue("score_id",temp);recordSet.GetFieldValue("student_name",temp);recordSet.MoveNext();}recordSet.Close();database.Close();8.4ODBC—Python調用ODBCimportmysql.pyodbc8.5數據庫連接池應用實戰數據庫連接:昂貴(反復建立和釋放與數據庫的物理連接)數據庫連接池:負責分配、管理和釋放數據庫連接。需要使用時去連接池中取出一條空閑的連接,而不是新建一條連接。常見連接池:Java:

Druid、C3P0

HikariCP等Python:DBUtils.PooledDB等8.5數據庫連接池應用實戰8.6ADO.NET——Window窗口程序實戰ADO.NET的體系結構8.6ADO.NET——Window窗口程序實戰ADO.NET中幾個重要概念Connection對象:主要用于建立與數據源的活動連接Command對象:主要用來執行SQL語句DataAdaper對象:主要用來通過Dataset處理數據DataReader對象:主要用來讀取數據(快速不緩沖的順序訪問)5.DataSet:離線處理的核心,用來存儲數據6.DataTable:DataSet中以表的形式存儲數據8.6ADO.NET——Window窗口程序實戰8.7ORM技術—基于Django框架的Web程序實戰ORM(Object/RelationalMapping)即對象關系映射,是一種數據持久化技術。它在對象模型和關系型數據庫直接建立起對應關系。Dept.javadept-deptNo-deptName-locationDEPT(table)DEPTnumber(2)DNAMEVARCHAR(20)LOCVARCHAR(20)ORM類表8.7ORM技術—基于Django框架的Web程序實戰Django的MVT架構MVC(Model-View-Control)8.7ORM技術—基于Django框架的Web程序實戰model層:數據庫的每張表有一個繼承自models類的對應子類view層:new_book:Book類的實例,該類基類方法save()可以插入數據8.8其他數據庫訪問技術—libmysql例如:mysql提供lib:libmysql.dll

mysql_init() //初始化數據結構mysql_library_init()//初始化數據庫mysql_real_connect()//連接數據庫mysql_query() //查詢

mysql_store_result() //存儲結果mysql_fetch_row() //逐行處理mysql_free_result() //釋放資源mysql_close() //關閉連接直接利用DBMS提供的動態鏈接庫8.8其他數據庫訪問技術—嵌入式SQL什么是嵌入式SQL(EmbeddedSQL)?

SQL語句嵌入到其他高級語言中,這時高級語言被稱為(宿)主語言,這種方式下使用的SQL稱為嵌入式SQL。(靜態SQL/動態SQL)如何區分主語言與SQL語句?前綴:EXECSQL結束標志:隨主語言的不同而不同如:C語言中使用SQL:EXECSQL<SQL語句>;例:EXECSQLDROPTABLEStudent;常見的幾個數據庫系統預編譯器(命令)PostgreSQL:ecpg(.pgc->.c)SQLServer:nsqlprep.exe(.sqc->.c)Oralce:proc/cc++8.8其他數據庫訪問技術—嵌入式SQL例:帶有嵌入式SQL的一小段C程序:查詢并打印學生成績。EXECSQLINCLUDESQLCA;

/*(1)定義SQL通信區*/EXECSQLBEGINDECLARESECTION;/*(2)說明主變量*/

CHARSno(5);

CHARCno(3);

INTgrade;EXECSQLENDDECLARESECTION;main()

{

EXECSQLDECLAREC1CURSORFOR

/*(3)游標操作(定義游標)*/

SELECTSno,Cno,gradeFROMSC;

/*從SC表查詢Sno,Cno,Grade*/

EXECSQLOPENC1;

/*(4)游標操作(打開游標)*/

for(;;) {

EXECSQLFETCHC1INTO:Sno,:Cno,:Grade;

/*(5)游標操作(將當前數據放入主變量并推進游標指針)*/

if(sqlca.sqlcode<>SUCCESS)

/*(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論