哈夫曼树编码构造

  • 格式:docx
  • 大小:35.91 KB
  • 文档页数:15

#include<iostream>using namespace std;#include<stdlib.h>#include<stdio.h>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<Sqltypes.h>#define cno_len 10#define name_len 10#define addr_len 15#define sdate_len 10#define nmno_len 10#define title_len 15#define period_len 10#define price_len 4#define start_len 10#define term_len 10#define issue_len 10#define qty_len 4class order{public:int select1();int select2();int insert1();int update1();int remove1();int insert2();int update2();int remove2();int insert3();int update3();int remove3();};int order::select1(){/* Step 1 定义句柄和变量*/SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHARcname[name_len],caddr[addr_len],ccno[cno_len],nnmno[nmno_len],ostart[start_len],oterm[term_len], osdate[sdate_len];SQLINTEGER oqty;SQLINTEGER cbcno=SQL_NTS,cbname=SQL_NTS,cbaddr=SQL_NTS,cbnmno=SQL_NTS,cbstart=SQL_NTS,cbterm=SQL_NTS,cbsdate=SQL_NTS,cbqt y=0;/* Step 2 初始化环境*/ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);/* Step 3 :建立连接*/ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;/* Step 4 :初始化语句句柄*/ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);//ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_IN TEGER);/* Step 5 :执行语句*/ret=SQLPrepare(serverhstmt,(SQLCHAR*)"select name,o,addr,sdate,nmno,start,term,qty \ from customer,sorder\where o=o\and o=?",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,cname,10,&cbname);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,ccno,10,&cbcno);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,caddr,15,&cbaddr);ret=SQLBindCol(serverhstmt,4,SQL_C_CHAR,osdate,10,&cbsdate);ret=SQLBindCol(serverhstmt,5,SQL_C_CHAR,nnmno,10,&cbnmno);ret=SQLBindCol(serverhstmt,6,SQL_C_CHAR,ostart,10,&cbstart);ret=SQLBindCol(serverhstmt,7,SQL_C_CHAR,oterm,10,&cbterm);ret=SQLBindCol(serverhstmt,8,SQL_C_LONG,&oqty,4,&cbqty);ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0, &cbcno);cout<<"输入订户编号:cno=";cin>>ccno;}ret=SQLExecute(serverhstmt);if(ret==SQL_NO_DATA_FOUND)cout<<"Fetch error\n";while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){cout<<ccno<<' '<<cname<<' '<<caddr<<' '<<osdate<<' '<<nnmno<<' '<<ostart<<' '<<oterm<<''<<oqty<<endl;}/* Step 7 中止处理*/SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::select2(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR nnmno[nmno_len];SQLINTEGER sum1;SQLDOUBLE sum2;SQLINTEGER cbnmno=SQL_NTS,cbsum1=0,cbsum2=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select sending.nmno, sum(qty),sum(qty*price)\ from sending,nmtable\where nmtable.nmno=sending.nmno\GROUP BY sending.nmno;",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,nnmno,10,&cbnmno);ret=SQLBindCol(serverhstmt,2,SQL_C_LONG,&sum1,0,&cbsum1);ret=SQLBindCol(serverhstmt,3,SQL_C_DOUBLE,&sum2,0,&cbsum2);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND) //从查询结果中取出数据{if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<nnmno<<'\t'<<sum1<<'\t'<<sum2<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::insert1(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],cname[name_len],caddr[addr_len];SQLINTEGER cbcno=SQL_NTS,cbname=SQL_NTS,cbaddr=SQL_NTS;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"insert into customer(cno,name,addr) values (?,?,?)",SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0,&cbcno);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, cname,0,&cbname);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,15,0, caddr,0,&cbaddr);cout<<"输入插入值:";cin>>ccno>>cname>>caddr;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select *\from customer",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno,10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,cname,10,&cbname);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,caddr,15,&cbaddr);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<cname<<' '<<caddr<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::update1(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],cname[name_len],caddr[addr_len];SQLINTEGER cbcno=SQL_NTS,cbname=SQL_NTS,cbaddr=SQL_NTS;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"update customer\set name=?,addr=?\where cno=?", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, cname,0,&cbname);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,15,0, caddr,0,&cbaddr);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0,&cbcno);cout<<"输入修改值:";cin>>cname>>caddr;cout<<"输入修改要求:";cin>>ccno;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from customer",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno, 10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,cname,10,&cbname);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,caddr,15,&cbaddr);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<cname<<' '<<caddr<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::remove1(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],cname[name_len],caddr[addr_len];SQLINTEGER cbcno=SQL_NTS,cbname=SQL_NTS,cbaddr=SQL_NTS;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"delete from customer\where cno=?", SQL_NTS);if (!(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO)){SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);return ret;}ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0,&cbcno);cout<<"输入删除要求:cno=";cin>>ccno;ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select *\from customer",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno,10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,cname,10,&cbname);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,caddr,15,&cbaddr);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<cname<<' '<<caddr<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::insert2(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR nnmno[nmno_len],ntitle[title_len],nperiod[period_len];SQLDOUBLE nprice;SQLINTEGER cbnmno=SQL_NTS,cbtitle=SQL_NTS,cbperiod=SQL_NTS,cbprice=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"insert into nmtable(nmno,title,period,price) values (?,?,?,?)", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, nnmno, 0, &cbnmno);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 15,0, ntitle, 0, &cbtitle);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, nperiod,0, &cbperiod);ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBLE,0,0, &nprice,0, &cbprice);cout<<"输入插入值:";cin>>nnmno>>ntitle>>nperiod>>nprice;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from nmtable",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,ntitle, 15,&cbtitle);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nperiod, 10,&cbperiod);ret=SQLBindCol(serverhstmt,4,SQL_C_DOUBLE,&nprice,0,&cbprice);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<nnmno<<' '<<ntitle<<' '<<nperiod<<' '<<nprice<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);;}int order::update2(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR nnmno[nmno_len],ntitle[title_len],nperiod[period_len];SQLDOUBLE nprice;SQLINTEGER cbnmno=SQL_NTS,cbtitle=SQL_NTS,cbperiod=SQL_NTS,cbprice=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"update nmtable\set title=?,period=?,price=?\where nmno=?", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 15,0, ntitle, 0, &cbtitle);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, nperiod,0, &cbperiod);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBLE, 0,0, &nprice,0, &cbprice);ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, nnmno, 0, &cbnmno);cout<<"输入修改值:";cin>>ntitle>>nperiod>>nprice;cout<<"输入修改要求:";cin>>nnmno;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from nmtable",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,ntitle, 15,&cbtitle);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nperiod, 10,&cbperiod);ret=SQLBindCol(serverhstmt,4,SQL_C_DOUBLE,&nprice,0,&cbprice);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<nnmno<<' '<<ntitle<<' '<<nperiod<<' '<<nprice<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::remove2(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR nnmno[nmno_len],ntitle[title_len],nperiod[period_len];SQLDOUBLE nprice;SQLINTEGER cbnmno=SQL_NTS,cbtitle=SQL_NTS,cbperiod=SQL_NTS,cbprice=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"delete from nmtable\where nmno=?", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0,nnmno,0,&cbnmno);cout<<"输入删除要求:nmno=";cin>>nnmno;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from nmtable",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,ntitle, 15,&cbtitle);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nperiod, 10,&cbperiod);ret=SQLBindCol(serverhstmt,4,SQL_C_DOUBLE,&nprice,0,&cbprice);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<nnmno<<' '<<ntitle<<' '<<nperiod<<' '<<nprice<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::insert3(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],osdate[sdate_len],nnmno[nmno_len],ostart[start_len],oterm[term_len]; SQLINTEGER oqty;SQLINTEGER cbcno=SQL_NTS,cbsdate=SQL_NTS,cbnmno=SQL_NTS,cbstart=SQL_NTS,cbterm=SQL_NTS,cbqty=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"insert into sorder(cno,sdate,nmno,start,term,qty) values (?,?,?,?,?,?)", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, ccno, 0,&cbcno);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, osdate,0, &cbsdate);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, nnmno,0,&cbnmno);ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, ostart,0, &cbstart);ret=SQLBindParameter(serverhstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR, 10,0, oterm,0,&cbterm);ret=SQLBindParameter(serverhstmt,6,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER, 0,0, &oqty,0,&cbqty);cout<<"输入插入值:";cin>>ccno>>osdate>>nnmno>>ostart>>oterm>>oqty;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from sorder",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno, 10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,osdate,10,&cbsdate);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,4,SQL_C_CHAR,ostart,10,&cbstart);ret=SQLBindCol(serverhstmt,5,SQL_C_CHAR,oterm, 10,&cbterm);ret=SQLBindCol(serverhstmt,6,SQL_C_LONG,&oqty, 0,&cbqty);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<osdate<<' '<<nnmno<<' '<<ostart<<' '<<oterm<<' '<<oqty<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::update3(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],osdate[sdate_len],nnmno[nmno_len],ostart[start_len],oterm[term_len]; SQLINTEGER oqty;SQLINTEGER cbcno=SQL_NTS,cbsdate=SQL_NTS,cbnmno=SQL_NTS,cbstart=SQL_NTS,cbterm=SQL_NTS,cbqty=0;ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"update sorder\set sdate=?,start=?,term=?,qty=?\where cno=? and nmno=?", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, osdate,0,&cbsdate);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ostart,0,&cbstart);ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, oterm, 0,&cbterm);ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0, &oqty, 0,&cbqty);ret=SQLBindParameter(serverhstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0,&cbcno);ret=SQLBindParameter(serverhstmt,6,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, nnmno, 0,&cbnmno);cout<<"输入修改值:";cin>>osdate>>ostart>>oterm>>oqty;cout<<"输入修改要求:";cin>>ccno>>nnmno;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);if(ret==SQL_ERROR)cout<<"Fetch error\n";ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from sorder",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno, 10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,osdate,10,&cbsdate);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,4,SQL_C_CHAR,ostart,10,&cbstart);ret=SQLBindCol(serverhstmt,5,SQL_C_CHAR,oterm, 10,&cbterm);ret=SQLBindCol(serverhstmt,6,SQL_C_LONG,&oqty, 0,&cbqty);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<osdate<<' '<<nnmno<<' '<<ostart<<' '<<oterm<<' '<<oqty<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}int order::remove3(){SQLHENV serverhenv; //环境句柄SQLHDBC serverhdbc; //连接句柄SQLHSTMT serverhstmt; //语句句柄SQLRETURN ret;SQLCHAR ccno[cno_len],osdate[sdate_len],nnmno[nmno_len],ostart[start_len],oterm[term_len]; SQLINTEGER oqty;SQLINTEGER cbcno=SQL_NTS,cbsdate=SQL_NTS,cbnmno=SQL_NTS,cbstart=SQL_NTS,cbterm=SQL_NTS,cbqty=0; ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv);ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);ret=SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, &serverhdbc);ret=SQLConnect(serverhdbc,(SQLCHAR*)"wt",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS); if (!SQL_SUCCEEDED(ret) ) //连接失败时返回错误值return -1;ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLPrepare(serverhstmt,(SQLCHAR*)"delete from sorder\where cno=? and nmno=?", SQL_NTS);if (ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, ccno, 0,&cbcno);ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,10,0, nnmno, 0,&cbnmno);cout<<"输入删除要求:cno=";cin>>ccno;cout<<" nmno=";cin>>nnmno;}ret=SQLExecute(serverhstmt);SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt);ret=SQLSetStmtAttr(serverhstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTE GER);ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"select * from sorder",SQL_NTS);if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO){ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,ccno, 10,&cbcno);ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,osdate,10,&cbsdate);ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,nnmno, 10,&cbnmno);ret=SQLBindCol(serverhstmt,4,SQL_C_CHAR,ostart,10,&cbstart);ret=SQLBindCol(serverhstmt,5,SQL_C_CHAR,oterm, 10,&cbterm);ret=SQLBindCol(serverhstmt,6,SQL_C_LONG,&oqty, 0,&cbqty);}while ( (ret=SQLFetch(serverhstmt) ) !=SQL_NO_DATA_FOUND){if(ret==SQL_ERROR)cout<<"Fetch error\n";elsecout<<ccno<<' '<<osdate<<' '<<nnmno<<' '<<ostart<<' '<<oterm<<' '<<oqty<<endl;}SQLFreeHandle(SQL_HANDLE_STMT, serverhstmt);SQLDisconnect(serverhdbc);SQLFreeHandle(SQL_HANDLE_DBC, serverhdbc);SQLFreeHandle(SQL_HANDLE_ENV, serverhenv);}class choice{public:int choose1();int choose2();int choose3();};int choice::choose1(){order x;cout<<"请选择要执行的操作:.增加"<<endl;cout<<" 2.修改"<<endl;cout<<" 3.删除"<<endl;char a;cin>>a;switch(a){case'1':x.insert1();break;case'2':x.update1();break;case'3':x.remove1();break;}return 0;}int choice::choose2(){order x;cout<<"请选择要执行的操作:.增加"<<endl;cout<<" 2.修改"<<endl;cout<<" 3.删除"<<endl;char a;cin>>a;switch(a){。