第一次玩CSDN,一个大学本科生,到了快毕业的年纪,真不知道是应该样样涉猎还是一心钻研。怎么说,走一步是一步吧。
今天找了做了C++ 和 SQLServer 连接的方式,在网上寻找很多方法并不适用,今天自己改着改着弄出来了,留作纪念!
#include <icrsint.h>
#include<iostream>
#include<iomanip>
#include <string>
using namespace std;
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") //ADO
void main()
{
CoInitialize(NULL);
_ConnectionPtr sqlSp;
HRESULT hr=sqlSp.CreateInstance(_uuidof(Connection));
if(FAILED(hr))
{
cout<<"_ConnectionPtr¶ÔÏóÖ¸ÕëʵÀý»¯Ê§°Ü!!!"<<endl;
return ;
}
else {
try {
_bstr_t strConnect="Driver={sql server};server=127.0.0.1,1433;uid=***;pwd=****;database=*****;";
sqlSp->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error &e) {
cout<<"´ò¿ªÊý¾Ý¿âʧ°Ü!!"<<endl;
}
//ÊäÈë½×¶Î
cout<<"1£º²éѯ"<<endl;
cout<<"2£º²åÈë"<<endl;
cout<<"3£ºÉ¾³ý"<<endl;
int flag;
cin>>flag;
if(flag==1) //²éѯÊý¾Ý¿â½á¹û
{
_RecordsetPtr m_pRecordset; //ÉùÃ÷¼Ç¼¼¯¶ÔÏóÖ¸Õ룬ÓÃÀ´Ö´ÐÐSQLÓï¾ä
if(FAILED(m_pRecordset.CreateInstance( _uuidof( Recordset ))))
{
cout<<"³õʼ»¯¼Ç¼¼¯¶ÔÏóÖ¸Õëʧ°Ü!"<<endl;
return;
}
try
{
//m_pRecordset->Open("select * from dbo.student",(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic, adCmdText);//Ö´Ðе¥±íSQLÓï¾ä
m_pRecordset->Open("select dbo.student.ID,dbo.student.name,dbo.stugrade.grade from dbo.student join dbo.stugrade on dbo.student.ID=dbo.stugrade.ID",
(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic, adCmdText); //Ö´Ðжà±íÁ¬½Ó
}
catch (_com_error &e)
{
cout<<"SQLÓï¾äÖ´ÐÐʧ°Ü!!"<<endl;
}
try {
m_pRecordset->MoveFirst();
cout<<"²éѯ½á¹ûÈçÏÂËùʾ:"<<endl;
while(!m_pRecordset->adoEOF)
{
string stu_num=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ID"))->Value);
string stu_name=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("name"))->Value);
string stu_grade=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("grade"))->Value);
cout<<stu_num<<" "<<stu_name<<" "<<stu_grade<<endl;
m_pRecordset->MoveNext();
}
}
catch (_com_error &e)
{
cout<<"½á¹û³ö´í!!"<<endl;
}
}
else if(flag==2)
{
_RecordsetPtr m_pRecordset; //ÉùÃ÷¼Ç¼¼¯¶ÔÏóÖ¸Õ룬ÓÃÀ´Ö´ÐÐSQLÓï¾ä
if(FAILED(m_pRecordset.CreateInstance( _uuidof( Recordset ))))
{
cout<<"³õʼ»¯¼Ç¼¼¯¶ÔÏóÖ¸Õëʧ°Ü!"<<endl;
return;
}
_bstr_t insert_sql="insert into dbo.student values(4,'wang')";
try
{
sqlSp->Execute(insert_sql,NULL,adCmdText);
m_pRecordset->Open("select * from dbo.student",(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic, adCmdText);//Ö´ÐвåÈëºó½øÐÐSQLÓï¾ä²éѯ
}
catch (_com_error &e)
{
cout<<"SQLÓï¾äÖ´ÐÐʧ°Ü!!"<<endl;
}
try {
m_pRecordset->MoveFirst();
cout<<"²éѯ½á¹ûÈçÏÂËùʾ:"<<endl;
while(!m_pRecordset->adoEOF)
{
string stu_num=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ID"))->Value);
string stu_name=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("name"))->Value);
cout<<stu_num<<" "<<stu_name<<endl;
m_pRecordset->MoveNext();
}
}
catch (_com_error &e)
{
cout<<"½á¹û³ö´í!!"<<endl;
}
}
else if(flag==3) //ɾ³ý
{
_RecordsetPtr m_pRecordset; //ÉùÃ÷¼Ç¼¼¯¶ÔÏóÖ¸Õ룬ÓÃÀ´Ö´ÐÐSQLÓï¾ä
if(FAILED(m_pRecordset.CreateInstance( _uuidof( Recordset ))))
{
cout<<"³õʼ»¯¼Ç¼¼¯¶ÔÏóÖ¸Õëʧ°Ü!"<<endl;
return;
}
_bstr_t delete_sql="delete from dbo.student where ID=4";
try
{
sqlSp->Execute(delete_sql,NULL,adCmdText);
m_pRecordset->Open("select * from dbo.student",(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic, adCmdText);//Ö´ÐвåÈëºó½øÐÐSQLÓï¾ä²éѯ
}
catch (_com_error &e)
{
cout<<"SQLÓï¾äÖ´ÐÐʧ°Ü!!"<<endl;
}
try {
m_pRecordset->MoveFirst();
cout<<"²éѯ½á¹ûÈçÏÂËùʾ:"<<endl;
while(!m_pRecordset->adoEOF)
{
string stu_num=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ID"))->Value);
string stu_name=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("name"))->Value);
cout<<stu_num<<" "<<stu_name<<endl;
m_pRecordset->MoveNext();
}
}
catch (_com_error &e)
{
cout<<"½á¹û³ö´í!!"<<endl;
}
}
}
system("pause");
}