




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫課程設計 班 級 軟件1001 學 號 3100608024 姓 名 張建彬 指導老師 辛燕 二零一二年 六 月 一、引言1目的課程設計為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力。課程設計的目的:1. 加深對數據庫系統、軟件工程、程序設計語言的理論知識的理解和應用水平;2. 在理論和實驗教學基礎上進一步鞏固已學基本理論及應用知識并加以綜合提高;3. 學會將知識應用于實際的方法,提高分析和解決問題的能力,增強動手能力;4. 為畢業設計和以后工作打下必要基礎。2題目設計一個訂戶訂閱報
2、刊的應用系統。1. 處理要求l 接收并且處理訂戶的訂閱要求l 回答訂戶的查詢l 統計報刊的訂閱情況2. 信息要求l 訂單l 訂戶l 報刊目錄l 投遞卡具體數據參見附表數據語義:l 一個客戶可以訂閱多份報刊,一種報刊可以為多個客戶訂閱(客戶-訂閱-報刊,m:n)l 一種報刊可以投遞給多個客戶,一個客戶一次可以接受多種報刊的投遞(報刊-投遞-客戶,m:n)3. 系統功能包括:(在查詢和管理中各選一題)l 訂戶管理:訂戶的增加、修改、刪除;l 報刊目錄管理:報刊目錄的增加、刪除、修改;l 訂單管理:訂單的增加、刪除、修改;l 查詢訂單:按訂戶查詢訂單的詳細情況;l 統計查詢:統計報刊的訂閱數量及金額
3、。3要求運用數據庫基本理論與應用知識,在微機RDBMS(SQL Server)的環境上建立一個數據庫應用系統。要求把現實世界的事物及事物之間的復雜關系抽象為信息世界的實體及實體之間聯系的信息模型,再轉換為機器世界的數據模型和數據文件,并對數據文件實施檢索、更新和控制等操作。 1. 用E-R圖設計選定題目的信息模型;2. 設計相應的關系模型,確定數據庫結構;3. 分析關系模式各屬于第幾范式,闡明理由;4. 設計應用系統的系統結構圖,確定系統功能;5. 通過設計關系的主碼約束、外碼約束和使用CHECK實現完整性控制;6. 為參照關系設計插入、刪除、修改觸發器;7. 實現應用程序設計、編程、優化功能
4、;8. 對系統的各個應用程序進行集成和調試,進一步優化系統功能、改善系統用戶界面完成實驗內容所指定的各項要求;9. 分析遇到的問題,總結并寫出課程設計報告;10. 自我評價4開發工具及技術Mmicrosoft visual C+ 6.0Microsoft SQL server 2005系統的功能分析圖: 報刊訂閱系統訂戶管理報刊目錄管理訂單管理查詢訂單統計查詢增加訂戶刪除訂戶更改訂戶增加報刊目錄刪除報刊目錄更改報刊目錄增加訂單刪除訂單更改訂單按訂戶查詢統計訂閱數量統計金額程序流程:本次實驗的報刊預訂系統總體上可以分為5個功能模塊:訂戶管理,報刊目錄管理,訂單管理,查詢預訂,統計查詢。其中每一個
5、管理模塊包括了三個數據庫的操作,分別是增加 刪除 更改;查詢分為單用戶查詢和統計查詢。用戶可以根據功能選擇來按照自己的需要進行操作。程序開始主菜單輸入選擇訂戶管理報刊目錄管理訂單管理統計查詢增加訂戶刪除訂戶修改訂戶查詢訂戶退出增加報刊刪除報刊修改報刊查詢報刊退出增加訂單刪除訂單修改訂單查詢訂單退出按訂戶統計統計訂單概念結構設計(E-R)圖l 說明:一個客戶可以訂閱多份報刊,一種報刊可以為多個客戶訂閱(客戶-訂閱-報刊,m:n)l 一種報刊可以投遞給多個客戶,一個客戶一次可以接受多種報刊的投遞(報刊-投遞-客戶,m:n)邏輯設計階段訂戶(編號,姓名,住址)報刊目錄(代號,名稱,刊期,單價)訂單(
6、訂戶號,報刊代號,日期,起定期,終定期,份數)投遞卡(訂戶號,報刊代號,期號,份數)在關系模型中,候選碼都用下劃線和加粗標出。外碼用斜體標出。其中訂單和投遞卡是訂戶表和報刊目錄的兩個聯系,都是多對多聯系。一個用戶可以訂閱不同報刊,同一種報刊可以被不同用戶訂閱。在訂戶關系中,訂戶號是主碼,非主屬性對碼完全依賴,不存在傳遞依賴,決定因素是碼,所以訂戶關系屬于BCNF范式。報刊目錄表中,報刊代號是主碼,非主屬性對碼完全依賴,不存在傳遞依賴,決定因素是碼,所以報刊目錄關系屬于BCNF范式。訂單表中,訂戶號,日期,報刊代號共同組成其候選碼,一個用戶可以在不同時間訂閱同一本報刊,而其中,訂戶號和報刊代號均
7、是其外碼。非主屬性對碼完全依賴,不存在傳遞依賴,決定因素都包含碼,所以訂單冠以關系屬于BCNF范式。投遞卡表中,訂戶號,報刊目錄,期號共同組成其候選碼。一個用戶可以訂閱同意報刊的不同期報刊。而其中訂戶號和報刊代號均是其外碼。非主屬性對碼完全依賴,不存在傳遞依賴,決定因素是碼,所以投遞卡關系屬于BCNF范式。3完整性設計在四個關系中都保持了實體完整性,主碼的唯一性。外碼沒有采用級聯刪除,保證了其參照完整新CHECK約束,限制了份數QTY必須大于等于0,價錢必須大于等于0; 開發工具簡單說明:本次的實驗是通過ODBC連接數據庫,通過對數據庫的應用程序的操作實現對數據源內部的數據的查詢和更新,大大提
8、高了應用系統與數據庫平臺的獨立性,使用ODBC使得應用系統的移植變得更加容易,當一個應用系統從一個數據庫平臺移到另一個數據庫平臺只要更換ODBC的RDBMS的驅動程序就可以。 配置數據源ODBC工作流程圖如下 初始化環境 建立連接 分配語句句柄 執行SQL語句有無結果集有 中止 結果處理無報刊訂閱數據庫數據關系圖如下:系統主要功能實現(控制臺程序截圖):1. 修改訂戶2.增加訂戶3.增加報刊目錄5.統計查詢6.按用戶查詢7.修改報刊目錄程序代碼: #include <stdlib.h>#include <stdio.h>#include <windows.h>
9、;#include <sql.h> / This is the the main include for ODBC Core functions.#include <sqlext.h> / This is the include for applications using the Microsoft SQL Extensions#include <sqltypes.h> / This file defines the types used in ODBC#include <sqlucode.h> / This is the unicode in
10、clude for ODBC Core functions#include <odbcinst.h> / This is the application include file for the SQL Server driver specific defines.#include <iostream>#include <string>#include <tchar.h>using namespace std;#define CNO_LEN 10#define NMNO_LEN 10#define ISSUE_LEN 10#define QTY_
11、LEN 4#define DATE_LEN 10#define START_LEN 10#define TERM_LEN 10#define TITLE_LEN 20#define PERIOD_LEN 10#define PRICE_LEN 8#define NAME_LEN 10#define ADDR_LEN 20void back()int main()/*Step 1 定義句柄括和變量*/以wang開頭的表示的是連接wangjian的變量 SQLHENV dinghenv; /環境句柄括 SQLHDBC dinghdbc; /連接句柄括 SQLHSTMT dinghstmt; /語句
12、句柄括 SQLRETURN ret;SQLDOUBLE PRICE;SQLINTEGER QTY;SQLCHAR CNOCNO_LEN,NMNONMNO_LEN,ISSUEISSUE_LEN,DATE1DATE_LEN,STARTSTART_LEN,TERMTERM_LEN, TITLETITLE_LEN,PERIODPERIOD_LEN,NAMENAME_LEN,ADDRADDR_LEN;SQLINTEGER cbCNO=SQL_NTS,cbNMNO=SQL_NTS,cbISSUE=SQL_NTS,cbQTY=0,cbDATE1=SQL_NTS,cbSTART=SQL_NTS,cbTERM=
13、SQL_NTS, cbTITLE=SQL_NTS,cbPERIOD=SQL_NTS,cbNAME=SQL_NTS,cbADDR=SQL_NTS;SQLINTEGER cbPRICE=0;int w,x,y,m,n;/*Step 2 初始化環境3*/loop:ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&dinghenv);ret=SQLSetEnvAttr(dinghenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);/*Step 3 建立連接*/ret=SQLAllocHandle(
14、SQL_HANDLE_DBC,dinghenv,&dinghdbc);ret=SQLConnect(dinghdbc,(SQLWCHAR*)(_T("SQLServe"),SQL_NTS,(SQLWCHAR*)(_T("sa"),SQL_NTS,(SQLWCHAR*)(_T("123"),SQL_NTS);if(!SQL_SUCCEEDED(ret) return -1;/*Step 4 初始化語句句柄括*/ret=SQLAllocHandle(SQL_HANDLE_STMT,dinghdbc,&dinghstmt);
15、ret=SQLSetStmtAttr(dinghstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTEGER);/*Step 5 執行語句*/cout<<"+訂戶訂閱報刊的應用系統+"<<endl;cout<<"輸入需要操作的序號?"<<endl;cout<<"1、訂戶管理<<endl;cout<<"2、報刊目錄管理<<endl;cout<<&
16、quot;3、訂單管理<<endl;cout<<"4、查詢訂單<<endl;cout<<"5、統計查詢"<<endl;cout<<"6、退出"<<endl;cin>>w;switch(w)case 1:w=1; /*訂?戶§管ü理?/ loop1:cout<<"+訂戶管理+"<<endl;cout<<"1、增加訂戶"<<endl;cout<
17、;<"2、修改訂戶"<<endl;cout<<"3、刪除訂戶"<<endl;cout<<"4、返回上級"<<endl;cin>>x;switch(x)case 1:x=1; /*增?加ó訂?戶§*/ SQLWCHAR CNO1CNO_LEN,NAME1NAME_LEN,ADDR1ADDR_LEN;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("INSERT INTO CUSTOMER(CNO,N
18、AME,ADDR) VALUES(?,?,?)"), SQL_NTS); /*輸?入?數簓據Y*/cout<<"輸入插入數據(NO,NAME,ADDR)?"<<endl;scanf("%s",CNO1);/cin>>CNO1;scanf("%s",NAME1); /cin>>NAME1;scanf("%s",ADDR1); /cin>>ADDR1; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCN
19、O=SQL_NTS;cbNAME=SQL_NTS;cbADDR=SQL_NTS;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO1,0,&cbCNO);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NAME_LEN,0,NAME1,0,&cbNAME);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,S
20、QL_CHAR,ADDR_LEN,0,ADDR1,0,&cbADDR);/*Step 6 處理結果集并執行預編譯后的語句*/ret=SQLExecute(dinghstmt); goto loop1;case 2:x=2;/*修改訂戶*/ SQLWCHAR CNO2CNO_LEN,NAME2NAME_LEN,ADDR2ADDR_LEN;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("UPDATE CUSTOMER SET NAME=?, ADDR=? WHERE CNO=?"), SQL_NTS); /*輸入數據*/cout<
21、<"輸入修改數據(NO,NAME,ADDR)?"<<endl;scanf("%s",CNO2); /cin>>CNO2;scanf("%s",NAME2); /cin>>NAME2;scanf("%s",ADDR2); /cin>>ADDR2; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbNAME=SQL_NTS;cbADDR=SQL_NTS;ret=SQLBindParameter(
22、dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NAME_LEN,0,NAME2,0,&cbNAME);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,ADDR_LEN,0,ADDR2,0,&cbADDR);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO2,0,&cbCNO);/*Step 6 處理結果集并執行預編譯后
23、的語句*/ret=SQLExecute(dinghstmt); goto loop1;case 3:x=3;/*刪除訂戶*/ SQLCHAR CNO3CNO_LEN; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("DELETE FROM CUSTOMER WHERE CNO=?"), SQL_NTS); /*輸入數據*/ cout<<"輸入要刪除的訂戶號"<<endl; cin>>CNO3; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)
24、cbCNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO3,0,&cbCNO); ret=SQLExecute(dinghstmt); goto loop1;case 4:x=4;goto loop; case 2:w=2;/*報刊目錄管理*/ loop2 :cout<<"+報刊目錄管理+"<<endl; cout<<"1、增加報刊目錄"<<endl; cout&
25、lt;<"2、修改報刊目錄?"<<endl; cout<<"3、刪除報刊目錄"<<endl; cout<<"4、返回上級"<<endl; cin>>y; switch(y)case 1:y=1; /*增加報刊目錄*/ SQLWCHAR NMNO1NMNO_LEN,TITLE1TITLE_LEN,PERIOD1PERIOD_LEN;SQLDOUBLE PRICE1;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("IN
26、SERT INTO NMTABLE(NMNO,TITLE,PERIOD,PRICE) VALUES(?,?,?,?)"), SQL_NTS); /*輸入數據*/cout<<"輸入插入數據(MNO,TITLE,PERIOD,PRICE)?"<<endl;scanf("%s",NMNO1); /cin>>NMNO1;scanf("%s",TITLE1); /cin>>TITLE1;scanf("%s",PERIOD1); /cin>>PERIOD1;
27、cin>>PRICE1; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbNMNO=SQL_NTS;cbTITLE=SQL_NTS;cbPERIOD=SQL_NTS;cbPRICE=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO1,0,&cbNMNO);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TITLE_LE
28、N,0,TITLE1,0,&cbTITLE);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,PERIOD_LEN,0,PERIOD1,0,&cbPERIOD);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBLE,0,0,&PRICE1,0,&cbPRICE);/*Step 6 處理結果集并執行預編譯后的語句*/ret=SQLExecute(dinghstmt); goto loo
29、p2;case 2:y=2;/*修改報刊目錄*/ SQLCHAR NMNO2NMNO_LEN,TITLE2TITLE_LEN,PERIOD2PERIOD_LEN; SQLDOUBLE PRICE2;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("UPDATE NMTABLE SET TITLE=?,PERIOD=?,PRICE=? WHERE NMNO=?"), SQL_NTS); /*輸入數據*/cout<<"輸入修改數據(MNO,TITLE,PERIOD,PRICE)?"<<endl;cin&
30、gt;>NMNO2;cin>>TITLE2;cin>>PERIOD2;cin>>PRICE2; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbNMNO=SQL_NTS;cbTITLE=SQL_NTS;cbPERIOD=SQL_NTS;cbPRICE=SQL_NTS;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TITLE_LEN,0,TITLE2,0,&cbTITLE);ret=SQLBindParamet
31、er(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,PERIOD_LEN,0,PERIOD2,0,&cbPERIOD);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBLE,0,0,&PRICE2,0,&cbPRICE);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO2,0,&cbNMNO);/*Ste
32、p 6 處理結果集并執行預編譯后的語句*/ret=SQLExecute(dinghstmt); goto loop2;case 3:y=3;/*刪除報饋刊目錄*/ SQLCHAR NMNO3NMNO_LEN; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("DELETE FROM NMTABLE WHERE NMNO=?"), SQL_NTS); /*輸?入?數簓據Y*/ cout<<"輸入要刪除的報刊號?"<<endl; cin>>NMNO3; if(ret=SQL_SUCCESS|
33、ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO3,0,&cbNMNO); ret=SQLExecute(dinghstmt); goto loop2;case 4:y=4;goto loop; case 3:w=3;/*訂單管理*/ loop3:cout<<"+訂單管理+"<<endl; cout<<"1、增加訂單&l
34、t;<endl; cout<<"2、修改訂單<<endl; cout<<"3、刪除訂單<<endl; cout<<"4、返回上級"<<endl; cin>>m; switch(m)case 1:m=1; /*增加訂單*/ SQLCHAR CNO4CNO_LEN,DATE4DATE_LEN,NMNO4NMNO_LEN,START4START_LEN,TERM4TERM_LEN;SQLINTEGER QTY4;ret=SQLPrepare(dinghstmt,(SQLW
35、CHAR*)(_T("INSERT INTO dbo.ORDER(CNO,DATE1,NMNO,START,TERM,QTY) VALUES(?,?,?,?,?,?)"), SQL_NTS); cout<<"輸入插入數據(CNO,DATE1,NMNO,START,TERM,QTY)?"<<endl;cin>>CNO4;cin>>DATE4;cin>>NMNO4;cin>>START4;cin>>TERM4;cin>>QTY4; if(ret=SQL_SUCCE
36、SS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=SQL_NTS;cbTERM=SQL_NTS;cbQTY=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO4,0,&cbCNO);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,DATE_LEN,0,DATE4,0,&
37、amp;cbDATE1);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO4,0,&cbNMNO);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,START_LEN,0,START4,0,&cbSTART);ret=SQLBindParameter(dinghstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TERM_LEN,0,TE
38、RM4,0,&cbTERM);ret=SQLBindParameter(dinghstmt,6,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0,&QTY4,0,&cbQTY);/*Step 6 處理結果集并執行預編譯后的語句*/ret=SQLExecute(dinghstmt); goto loop3;case 2:m=2;/*修改訂單*/ SQLCHAR CNO5CNO_LEN,DATE5DATE_LEN,NMNO5NMNO_LEN,START5START_LEN,TERM5TERM_LEN;SQLINTEGER QTY5;ret
39、=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("UPDATE dbo.ORDER SET DATE1=?,START=?,TERM=?,QTY=? WHERE CNO=? AND NMNO=?"), SQL_NTS); /*輸入數據*/cout<<"輸入修改數據,CNO,DATE1,NMNO,START,TERM,QTY)?"<<endl;cin>>CNO5;cin>>DATE5;cin>>NMNO5;cin>>START5;cin>>TERM
40、5;cin>>QTY5; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=SQL_NTS;cbTERM=SQL_NTS;cbQTY=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,DATE_LEN,0,DATE5,0,&cbDATE1);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,S
41、QL_C_CHAR,SQL_CHAR,START_LEN,0,START5,0,&cbSTART);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TERM_LEN,0,TERM5,0,&cbTERM);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0,&QTY5,0,&cbQTY);ret=SQLBindParameter(dinghstmt,5,SQL_PARAM_IN
42、PUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO5,0,&cbCNO);ret=SQLBindParameter(dinghstmt,6,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO5,0,&cbNMNO);/*Step 6 處理結果集并執行預編譯后的語句*/ret=SQLExecute(dinghstmt); goto loop3;case 3:m=3;/*刪除訂單*/ SQLCHAR CNO6CNO_LEN,NMNO6NMNO_LEN; ret=SQLPrepare(dinghstmt,(S
43、QLWCHAR*)(_T("DELETE FROM dbo.ORDER WHERE CNO=? AND NMNO=?"), SQL_NTS); /*輸入數據*/ cout<<"輸入要刪除的用戶號與報刊號"<<endl; cin>>CNO6; cin>>NMNO6; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS;cbNMNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPU
44、T,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO6,0,&cbCNO); ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO6,0,&cbNMNO); ret=SQLExecute(dinghstmt); goto loop3;case 4:m=4;goto loop; case 4:w=4;/*查詢訂單*/ SQLCHAR CNO7CNO_LEN,DATE7DATE_LEN,NMNO7NMNO_LEN,START7START_LEN,TE
45、RM7TERM_LEN; SQLINTEGER QTY7; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T("SELECT * FROM dbo.ORDER WHERE CNO=?"),SQL_NTS);/*if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)ret=SQLBindParameter(bingmouhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO7,0,&cbCNO);*/ cout<<"查詢的
46、用戶號"<<endl; scanf("%s",CNO7); if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=SQL_NTS;cbTERM=SQL_NTS;cbQTY=0; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO7,0,&cbCNO);ret=SQLBindCol(dingh
47、stmt,1,SQL_C_CHAR,CNO7,CNO_LEN,&cbCNO); ret=SQLBindCol(dinghstmt,2,SQL_C_CHAR,DATE7,DATE_LEN,&cbDATE1); ret=SQLBindCol(dinghstmt,3,SQL_C_CHAR,NMNO7,NMNO_LEN,&cbNMNO);ret=SQLBindCol(dinghstmt,4,SQL_C_CHAR,START7,START_LEN,&cbSTART);ret=SQLBindCol(dinghstmt,5,SQL_C_CHAR,TERM7,TERM_LEN,&cbTERM);ret=SQLBindCol(dinghstmt,6,SQL_C_LONG,&QTY7,0,&cbQTY); ret=SQLExecute(dinghstmt); while(SQLFe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中數學必修四知識點總結
- 多發傷的臨床護理
- 幼兒園語言教育與活動設計 課件 第3、4章 幼兒園語言教育活動設計的原理;幼兒園語言教育活動與其他教育活動的交叉與融合
- 人美版小學五年級美術下冊臺歷掛歷的設計教學設計
- 汽車銷售補充合同范本
- 預防醫學招聘個人簡歷
- 科學護理寶寶
- 肢體斷離傷的臨床護理
- 斷指再植的臨床護理
- 2025年中小學落實雙減工作總結模版
- 2024秋期國家開放大學《可編程控制器應用實訓》一平臺在線形考(形成任務1)試題及答案
- 2023年高考真題-地理(河北卷) 含答案
- DB50-T 1649-2024 餐飲業菜品信息描述規范
- GB/T 17775-2024旅游景區質量等級劃分
- 山東省東營市2024年中考英語真題(含答案)
- 物流無人機垂直起降場選址與建設規范
- DBJ50-T-417-2022 建筑施工高處墜落防治安全技術標準
- 醫院物業掛靠協議書
- JT-T-852-2013公路橋梁摩擦擺式減隔震支架
- 社會主義發展史智慧樹知到期末考試答案2024年
- 達格列凈二甲雙胍緩釋片(I)-臨床用藥解讀
評論
0/150
提交評論