#include "StdAfx.h"
#include "iostream.h"
#include<stdio.h>
#include <iomanip.h>
#include <stdlib.h>
class CangKu
{
public:
char productId[20];
char productName[30];
char categoryId[10];
char productor[20];
char introduce[200];
float price;
CangKu(){}
~CangKu(){}
void query()
{
::CoInitialize(NULL); //初始化OLE/COM库环境
CangKu ck;
::CoInitialize(NULL);
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from product");
try
{
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=login; uid=sa; pwd=2004944020a;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码空只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsid,vsproductname,vscategoryId,vsproductor,vsintroduce,vsprice; //对应库中的字段
cout << "编号 商品名 产品分类号 生产厂家 产品介绍 价格";
cout << "\n----------------------------------------------------------------\n";
while(!m_pRecordset->adoEOF)
{
vsid = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsproductname = m_pRecordset->GetCollect("productName");
vscategoryId = m_pRecordset->GetCollect("pCategoryId");
vsproductor = m_pRecordset->GetCollect("productor");
vsintroduce = m_pRecordset->GetCollect("introduce");
vsprice = m_pRecordset->GetCollect("price");
if (vsid.vt != VT_NULL && vsproductname.vt != VT_NULL && vscategoryId.vt != VT_NULL&& vsproductor.vt != VT_NULL && vsintroduce.vt != VT_NULL && vsprice.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsid;//setw(14)表示左边空出14个空格
cout << setw(14) << (char*)(_bstr_t)vsproductname;
cout << setw(8) << (char*)(_bstr_t)vscategoryId;
cout << setw(8) <<(char*)(_bstr_t)vsproductor;
cout <<setw(20) << (char*)(_bstr_t)vsintroduce;
cout <<setw(20) << (char*)(_bstr_t)vsprice;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext();///移到下一条记录
}
//m_pRecordset->Update();
//m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
//m_pRecordset->Delete(adAffectCurrent);删除当前数据
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
}
void insert()
{
::CoInitialize(NULL); //初始化OLE/COM库环境
CangKu ck;
::CoInitialize(NULL);
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from product");
//char * query_cmd = "DELETE FROM book WHERE bookname = '怕'";
try
{
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=login; uid=sa; pwd=2004944020a;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码空只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsid,vsproductname,vscategoryId,vsproductor,vsintroduce,vsprice; //对应库中的字段
cout << "编号 商品名 产品分类号 生产厂家 产品介绍 价格";
cout << "\n----------------------------------------------------------------\n";
while(!m_pRecordset->adoEOF)
{
vsid = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsproductname = m_pRecordset->GetCollect("productName");
vscategoryId = m_pRecordset->GetCollect("pCategoryId");
vsproductor = m_pRecordset->GetCollect("productor");
vsintroduce = m_pRecordset->GetCollect("introduce");
vsprice = m_pRecordset->GetCollect("price");
if (vsid.vt != VT_NULL && vsproductname.vt != VT_NULL && vscategoryId.vt != VT_NULL&& vsproductor.vt != VT_NULL && vsintroduce.vt != VT_NULL && vsprice.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsid;//setw(14)表示左边空出14个空格
cout << setw(14) << (char*)(_bstr_t)vsproductname;
cout << setw(8) << (char*)(_bstr_t)vscategoryId;
cout << setw(8) <<(char*)(_bstr_t)vsproductor;
cout <<setw(20) << (char*)(_bstr_t)vsintroduce;
cout <<setw(20) << (char*)(_bstr_t)vsprice;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext();///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n请输入你要添加的商品信息\n";
cout << "编号:";
cin >>ck.productId;
cout << "\n商品名:";
cin >>ck.productName;
cout << "\n产品分类号:";
cin >>ck.categoryId;
cout << "\n生产厂家:";
cin >>ck.productor;
cout<<"\n商品介绍:";
cin>>ck.introduce;
cout << "\n价格:";
cin >> ck.price;
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("productId",_variant_t(ck.productId));
m_pRecordset->PutCollect("productName",_variant_t(ck.productName));
m_pRecordset->PutCollect("pCategoryId",_variant_t(ck.categoryId));
m_pRecordset->PutCollect("productor",_variant_t(ck.productor));
m_pRecordset->PutCollect("introduce",_variant_t(ck.introduce));
m_pRecordset->PutCollect("price",_variant_t(ck.price));
m_pRecordset->Update();
//m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
//m_pRecordset->Delete(adAffectCurrent);删除当前数据
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
}
void del()//未实现
{
::CoInitialize(NULL); //初始化OLE/COM库环境
CangKu ck;
char pid[20];
::CoInitialize(NULL);
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from product");
//char * query_cmd = "DELETE FROM product WHERE productId ='"+pid+"'";
try
{
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=login; uid=sa; pwd=;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码空只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsid,vsproductname,vscategoryId,vsproductor,vsintroduce,vsprice; //对应库中的字段
cout << "编号 商品名 产品分类号 生产厂家 产品介绍 价格";
cout << "\n----------------------------------------------------------------\n";
while(!m_pRecordset->adoEOF)
{
vsid = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsproductname = m_pRecordset->GetCollect("productName");
vscategoryId = m_pRecordset->GetCollect("pCategoryId");
vsproductor = m_pRecordset->GetCollect("productor");
vsintroduce = m_pRecordset->GetCollect("introduce");
vsprice = m_pRecordset->GetCollect("price");
if (vsid.vt != VT_NULL && vsproductname.vt != VT_NULL && vscategoryId.vt != VT_NULL&& vsproductor.vt != VT_NULL && vsintroduce.vt != VT_NULL && vsprice.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsid;//setw(14)表示左边空出14个空格
cout << setw(14) << (char*)(_bstr_t)vsproductname;
cout << setw(8) << (char*)(_bstr_t)vscategoryId;
cout << setw(8) <<(char*)(_bstr_t)vsproductor;
cout <<setw(20) << (char*)(_bstr_t)vsintroduce;
cout <<setw(20) << (char*)(_bstr_t)vsprice;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext();///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n请输入你要删除的商品编号\n"<<endl;
cin>>pid;
m_pRecordset->Update();
//m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除
//m_pRecordset->Delete(adAffectCurrent);删除当前数据
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
}
void modify()//未实现
{
::CoInitialize(NULL); //初始化OLE/COM库环境
CangKu ck;
::CoInitialize(NULL);
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from product ");
try
{
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=login; uid=sa; pwd=2004944020a;";
//若数据库在网络上则Server为形如(192.168.1.5,3340)
//用户sa和密码空只是针对我的库
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsid,vsproductname,vscategoryId,vsproductor,vsintroduce,vsprice; //对应库中的字段
cout << "编号 商品名 产品分类号 生产厂家 产品介绍 价格";
cout << "\n----------------------------------------------------------------\n";
while(!m_pRecordset->adoEOF)
{
vsid = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以
vsproductname = m_pRecordset->GetCollect("productName");
vscategoryId = m_pRecordset->GetCollect("pCategoryId");
vsproductor = m_pRecordset->GetCollect("productor");
vsintroduce = m_pRecordset->GetCollect("introduce");
vsprice = m_pRecordset->GetCollect("price");
if (vsid.vt != VT_NULL && vsproductname.vt != VT_NULL && vscategoryId.vt != VT_NULL&& vsproductor.vt != VT_NULL && vsintroduce.vt != VT_NULL && vsprice.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsid;//setw(14)表示左边空出14个空格
cout << setw(14) << (char*)(_bstr_t)vsproductname;
cout << setw(8) << (char*)(_bstr_t)vscategoryId;
cout << setw(8) <<(char*)(_bstr_t)vsproductor;
cout <<setw(20) << (char*)(_bstr_t)vsintroduce;
cout <<setw(20) << (char*)(_bstr_t)vsprice;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext();///移到下一条记录
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n请输入你要修改的商品信息编号\n";
cout << "编号:";
cin >>ck.productId;
cout << "\n商品名:";
cin >>ck.productName;
cout << "\n产品分类号:";
cin >>ck.categoryId;
cout << "\n生产厂家:";
cin >>ck.productor;
cout<<"\n商品介绍:";
cin>>ck.introduce;
cout << "\n价格:";
cin >> ck.price;
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("productId",_variant_t(ck.productId));
m_pRecordset->PutCollect("productName",_variant_t(ck.productName));
m_pRecordset->PutCollect("pCategoryId",_variant_t(ck.categoryId));
m_pRecordset->PutCollect("productor",_variant_t(ck.productor));
m_pRecordset->PutCollect("introduce",_variant_t(ck.introduce));
m_pRecordset->PutCollect("price",_variant_t(ck.price));
m_pRecordset->Update();
m_pRecordset->Close(); // 关闭记录集
}
catch(_com_error e)
{
cerr << "\nERROR:" << (char*)e.Description();//抛出异常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();
}
};
int main()
{
CangKu ck;
int num;
while(1)
{
cout<<"欢迎光临商品管理系统"<<endl;
cout<<"1.查看现有商品"<<endl;
cout<<"2.增加现有产品"<<endl;
cout<<"3.修改现有商品的信息"<<endl;//未实现
cout<<"4.删除现有商品"<<endl;//未实现
cout<<"5.退出";
cout<<endl<<"请输入功能编号:"<<endl;
cin>>num;
switch(num)
{
case 1:ck.query();getchar();system("cls");continue;
case 2:ck.insert();system("cls");continue;
case 3:ck.modify();getchar();system("cls");continue;;
case 4:ck.del();getchar();system("cls");continue;
case 5:cout<<"欢迎下次使用,谢谢"<<endl;break;
default:break;
}
return 0;
}
}
删除和修改功能没有出来,我这个程序是根据别人的程序改的,对ado不是很了解,望大家能帮帮我。