📄 xxx.cpp
字号:
#pragma warning(disable:4146)
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
#include "System32_ado15.h"
#pragma warning(disable:4146)
#pragma comment( lib, "Sql_Sever_YJ.lib" )//指定与静态库一起连接
#include <iostream>
#include <iomanip> //for setw()
#include<string>
using namespace std;
extern _ConnectionPtr m_pConnection;
class STU
{
public:
char snum[10]; //学号
char sname[10]; //姓名
char ssex[2]; //姓别
long sage; //年龄
char smajor[20]; //专业
public:
STU(){}
~STU(){}
};
class Course
{
public:
char Cno[10];//bian haoffff
char Cname[40];//ming zi
char Cpno[10];//xian xing ke
long CCredit;//xue fen
public:
Course(){}
~Course(){}
};
void InitExe();
void UnInitExe();
void ShowData();
void AddData();
void DeleteData();
void CatchOrder();
void AddOnlyOne();
void ShowDataCourse();
void AddOnlyOneCourse();
void TrySQLFirst();
void main()
{
InitExe();
CatchOrder();
UnInitExe();
}
void InitExe()
{
InitExeDll();
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
bstr_t bstrSQL("select * from student"); //查询语句
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
m_pRecordset->Close();
}//////////////////////////////////////////////////////////////////////////
void ShowData()
{
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
bstr_t bstrSQL("select * from student"); //查询语句
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
m_pRecordset->Close();
}//////////////////////////////////////////////////////////////////////////
void ShowDataCourse()
{
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
bstr_t bstrSQL("select * from Course"); //查询语句
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
variant_t vsnum,vsname,vsage,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
cout <<"课程号 课程名 先行课 学分";
cout<<"\n----------------------------------------------------------------\n";
try{ m_pRecordset->MoveFirst(); ///移到下一条记录
while (!m_pRecordset->EndOfFile)
{
vsnum = m_pRecordset->GetCollect("Cno");//这儿给字段编号和字段名都可以
vsname = m_pRecordset->GetCollect("Cname");
vsage = m_pRecordset->GetCollect("Cpno");
vsmajor = m_pRecordset->GetCollect("Ccredit");
if (vsage.vt==VT_NULL) {
vsage=(_bstr_t)"NULL";
}
if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL)
{
cout.setf(ios::left);
cout <<setw(14) <<(char*)(_bstr_t)vsnum;
cout <<setw(14) <<(char*)(_bstr_t)vsname;
cout <<setw(14) <<(char*)(_bstr_t)vsage;
cout <<setw(20) <<vsmajor.intVal;
cout.unsetf(ios::left);
cout <<endl;
m_pRecordset->MoveNext(); ///移到下一条记录
}
}
} catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
cout<<"\n----------------------------------------------------------------\n";
m_pRecordset->Close();
}
void CatchOrder()
{
ShowData(); //读取数据库,并且显示
char m_str[10],m_char;
while(1)
{
printf("\n 操作菜单:\n \
Q 退出: I 增加一行数据 A 增加数据(针对student表格) \n \
D 删除数据(针对student表格) R 刷新数据(针对student表格) \n \n\
C 浏览course表数据 G 添加Course表数据 \n\n\
T 执行SQL语句\n\n " );
scanf("%s",m_str);
sscanf( m_str, "%c", &m_char ); //将m_str转化为字符,并保存在m_char中
if('Q'==m_char||'q'==m_char)
break; //退出程序
if('G'==m_char||'g'==m_char)
AddOnlyOneCourse(); //退出程序
if('T'==m_char||'t'==m_char)
TrySQLFirst(); //增加数据
if('C'==m_char||'c'==m_char)
ShowDataCourse(); //增加数据
if('A'==m_char||'a'==m_char)
AddData(); //增加数据
if('I'==m_char||'i'==m_char)
AddOnlyOne();
if('R'==m_char||'r'==m_char)
ShowData();
if('D'==m_char||'d'==m_char)
DeleteData(); //退出程序
}
}//////////////////////////////////////////////////////////////////////////
void AddData()
{
int m=10,n; _variant_t ra;
cout<<"输入起始学号";
cin>>n;
char stro[200];
try{
for (int i=200;i<220;i++)
{
n+=i;
sprintf(stro,"INSERT INTO student(Sno,Sname,Sage,Ssex,Sdept) VALUES (%d, '小乌龟第%d号',33,'na','MyJJ')",n,n);
cout<<stro;
cout<<endl;
m_pConnection->Execute(stro,&ra,adCmdText);//往表格里面添加记录
}
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
}//////////////////////////////////////////////////////////////////////////
void DeleteData()
{
printf("输入要删除的学生学号:\n\n");
char cno[30],sno[200];
cin>>cno;
try{
sprintf(sno,"Delete from student where sno='%s'",cno);
m_pConnection->Execute(sno,NULL,1);
}
catch(_com_error e)
{
ErrorShow(e);
}
}//////////////////////////////////////////////////////////////////////////
void AddOnlyOneCourse()
{
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
bstr_t bstrSQL("select * from Course"); //查询语句
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
Course Mycourse;
cout <<"\n----------------------------------------------------------------\n";
cout <<"\n请输入你要添加的学生信息\n";
cout <<"课程号:";
cin >>Mycourse.Cno;
cout <<"\n课程名:";
cin >>Mycourse.Cname;
cout <<"\n先行课:";
cin >>Mycourse.Cpno;
cout <<"\n学分:";
cin >>Mycourse.CCredit;
try{
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("Cno",_variant_t(Mycourse.Cno));
m_pRecordset->PutCollect("Cname",_variant_t(Mycourse.Cname));
m_pRecordset->PutCollect("Cpno",_variant_t(Mycourse.Cpno));
m_pRecordset->PutCollect("Ccredit",_variant_t(Mycourse.CCredit));
m_pRecordset->Update();
cout <<"\n----------------------------------------------------------------\n";
}
catch(_com_error e)
{
/// printf(e.ErrorMessage()); //输出错误信息
printf("出现错误,请向管理员报告:\n\n");
printf("\a\tCode = %08lx\n", e.Error());
printf("\a\tCode meaning = %s\n", e.ErrorMessage());
_bstr_t bstrSource(e.Source());
printf("\a\tSource = %s\n", (LPCSTR)bstrSource);
_bstr_t bstrDescription(e.Description());
printf("\a\tDescription = %s\n", (LPCSTR)bstrDescription);
}
}
void AddOnlyOne()
{
::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try{
bstr_t bstrSQL("select * from student"); //查询语句
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
printf(e.ErrorMessage()); //输出错误信息
}
STU student;
cout <<"\n----------------------------------------------------------------\n";
cout <<"\n请输入你要添加的学生信息\n";
cout <<"学号:";
cin >> student.snum;
cout <<"\n姓名:";
cin >> student.sname;
cout <<"\n年龄:";
cin >> student.sage;
cout <<"\n姓别:";
cin >> student.ssex;
cout <<"\n专业:";
cin >> student.smajor;
try{
m_pRecordset->MoveFirst(); //移动到第一条记录
m_pRecordset->AddNew(); ///添加新记录
m_pRecordset->PutCollect("sno",_variant_t(student.snum));
m_pRecordset->PutCollect("sname",_variant_t(student.sname));
m_pRecordset->PutCollect("sage",_variant_t(student.sage));
m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
m_pRecordset->PutCollect("sdept",_variant_t(student.smajor));
m_pRecordset->Update();
cout <<"\n----------------------------------------------------------------\n";
}
catch(_com_error e)
{
ErrorShow(e);
}
}
void TrySQLFirst()
{
TrySQLFirst2();
}
void UnInitExe()
{
m_pConnection->Close();
::CoUninitialize();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -