北郵數據庫實驗四mysql_第1頁
北郵數據庫實驗四mysql_第2頁
北郵數據庫實驗四mysql_第3頁
北郵數據庫實驗四mysql_第4頁
北郵數據庫實驗四mysql_第5頁
已閱讀5頁,還剩1頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、實驗四數據庫接口實驗實驗目的1 通過實驗了解通用數據庫應用編程接口odbc 的基本原理和實現機制,熟悉主要的 odbc接口的語法和使用方法;2利用 c 語言 (或其它支持odbc 接口的高級程序設計語言)編程實現簡單的數據庫應用程序,掌握基于odbc 的數據庫訪問的基本原理和方法3學習 java 語言,并采用jdbc 接口方式對數據庫進行訪問實驗內容與步驟1.以教科書第四章關于sql 語言相關內容為基礎,課后查閱、 自學 odbc 接口有關內容,包括 odbc 的體系結構、工作原理、數據訪問過程、主要api 接口的語法和使用方法等。2 以實驗二建立的學生數據庫為基礎,編寫c 語言 (或其它支持

2、odbc 接口的高級程序設計語言 ) 數據庫應用程序,按照如下步驟訪問數據庫(a)step1. odbc 初始化,為odbc 分配環境句柄(b)step2. 建立應用程序與odbc 數據源的連接(c)step3. 利用sqlexecdirect語句,實現數據庫應用程序對數據庫的建立、查詢、修改、刪除等操作(d)step4. 檢索查詢結果集(e)step5. 結束數據庫應用程序實驗要求1要求所編寫的數據庫訪問應用程序中使用到以下主要的odbc api函數:(1)sqlallocenv :初始化 odbc 環境,返回環境句柄(2)sqlallocconnect :為連接句柄分配內存并返回連接句柄(

3、3)sqlconnect :連接一個 sql數據資源(4) sqldriverconnect 連接一個 sql數據資源,允許驅動器向用戶詢問信息(5) sqlallocstmt 為語句句柄分配內存 , (6) sqlexecdirect把 sql語句送到數據庫服務器,請求執行由sql語句定義的數據庫訪問(7) sqlfetchadvances 將游標移動到到查詢結果集的下一行( 或第一行 ) (8) sqlgetdata 按照游標指向的位置,從查詢結果集的特定的一列取回數據(9) sqlfreestmt 釋放與語句句柄相關的資源(10) sqldisconnect 切斷連接(11) sqlfr

4、eeconnect 釋放與連接句柄相關的資源(12) sqlfreeenv 2.實驗步驟step1. odbc 初始化,為odbc 分配環境句柄step2. 建立應用程序與odbc 數據源的連接step3. 利用 sqlexecdirect 語句,實現數據庫應用程序對數據庫的建立、查詢、修改、刪除等操作step4. 檢索查詢結果集step5. 結束數據庫應用程序實驗結果首先查看course表中所有數據在 course中插入一個元組從 course中刪除一個元組從 course表中簡單查詢從 student 表中復雜查詢實驗代碼#include #include #include #includ

5、e sql.h #include sqltypes.h #include sqlext.h #includesqlucode.h #includeodbcinst.h #include #include using namespace std; retcode retcode;/ 結果返回集sqlhdbc hdbc;/ 定義鏈接句柄void sql(string);/ 執行sql 語句子程序int main() string str; sqlhandle henv; / 定義環境句柄unsigned char sy=mysql;/odbc 數據源名稱unsigned char db2=root

6、;/ 用戶名unsigned char pass=548934;/ 密碼/分配 odbc 環境retcode=sqlallochandle(sql_handle_env, sql_null_handle, &henv); if(retcode=sql_success|retcode=sql_success_with_info) /聲明環境retcode=sqlsetenvattr(henv, sql_attr_odbc_version,(void*)sql_ov_odbc3, 0); if(retcode = sql_success | retcode = sql_success_wi

7、th_info) retcode = sqlallochandle(sql_handle_dbc, henv, &hdbc); /分配連接句柄if(retcode = sql_success | retcode = sql_success_with_info) retcode=sqlconnect(hdbc,sy,sql_nts,db2,sql_nts,pass,sql_nts);/鏈接if(retcode = sql_success | retcode = sql_success_with_info) while(1) coutplease input the quary:endl;

8、 getline(cin,str); if(str=exit) return 0; sql(str); sqlfreeconnect(hdbc); / 釋放鏈接句柄sqlfreeenv(henv); / 釋放odbc 環境句柄system(pause); return 0; void sql(string aaa) char l150=0;char l250=0;char l350=0;char l450=0;char l550=0;char l650=0; long lenout1,lenout2,lenout3,lenout4,lenout5,lenout6; sqlhstmt hstmt

9、;/ 定義語句句柄retcode=sqlallochandle(sql_handle_stmt, hdbc, &hstmt); /分配語義句柄if(retcode=sql_success) retcode=sqlexecdirect(hstmt,(sqlchar *)(aaa.c_str(),sql_nts); if(retcode = sql_success|retcode = sql_success_with_info) /將結果集中的屬性列一一綁定至變量retcode=sqlbindcol(hstmt,1,sql_c_char,l1,sizeof(l1),&lenout1

10、); retcode=sqlbindcol(hstmt,2,sql_c_char,l2,sizeof(l2),&lenout2); retcode=sqlbindcol(hstmt,3,sql_c_char,l3,sizeof(l3),&lenout3); retcode=sqlbindcol(hstmt,4,sql_c_char,l4,sizeof(l4),&lenout4); retcode=sqlbindcol(hstmt,5,sql_c_char,l5,sizeof(l5),&lenout5); retcode=sqlbindcol(hstmt,6,sq

11、l_c_char,l6,sizeof(l6),&lenout6); /把所有捆綁過的數據字段的數據拷貝到相應的緩沖區retcode=sqlfetch(hstmt); while(retcode = sql_success|retcode = sql_success_with_info) if(l20=0) cout(string)l1endl; else if(l30=0) cout(string)l1t(string)l2endl; else if(l40=0) cout(string)l1 (string)l2 (string)l3endl; else if(l50=0) cout(string)l1 (string)l2 (string)l3 (string)l4endl; else if(l60=0) cout(string)l1 (string)l2 (string)l4 (string)l4 (string)l5endl; else cout(string)l1 (string)l2 (string)l4 (string)l4 (string)l5 (string)l6endl; retcode=sqlfetch(hstmt); sqlfreestmt(hstmt,sql_drop); / 釋放語句句柄 實驗總結這次實驗

溫馨提示

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

評論

0/150

提交評論