VC使用ADO访问sql server数据库

软件:vs2010、sql server2005
代码如下:
#include <cstring>
#include <iostream>
using namespace std;
//1、添加对ADO的支持
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")


int main()
{
CoInitialize(NULL);


//2、创建实例
_ConnectionPtr   pCon(__uuidof(Connection));
_RecordsetPtr    pReS(__uuidof(Recordset));
_CommandPtr      pCmd(__uuidof(Command));


//3、打开数据库连接
try{
//pCon->Open("Provider=SQLOLEDB;Data Source=Localhost,1433;Initial Catalog=QPTreasureDB;uid=sa;pwd=123;","","",adConnectUnspecified);
pCon->Open("Provider=SQLOLEDB;Data Source=Localhost,1433;uid=sa;pwd=123;","","",adConnectUnspecified);
}
catch(...){
cout<<"打开数据库失败。。。"<<endl;
goto endA;
}

//4、读取数据(对upadate类似操作都可以用_ConnectionPtr的Execute即可,不需要后面步奏;而select时,不管是用_ConnectionPtr还是
//_RecordsetPtr还是_CommandPtr都会直接(参数)或间接(返回值)使用到_ConnectionPtr和_RecordsetPtr同时使用才能得到结果,实例如下)
LPCTSTR strSql="SELECT sum(Score) Score FROM QPTreasureDB.dbo.GameScoreInfo";
try
{
//---------方式 1)、_ConnectionPtr----------------
pReS=pCon->Execute(_bstr_t(strSql),NULL,adCmdText);


//---------方式 2)、_RecordsetPtr----------------
//pReS->Open(_variant_t(strSql),(_variant_t)( (IDispatch*)pCon),adOpenDynamic,adLockOptimistic,adCmdText);


//---------方式 3)、_CommandPtr----------------
//pCmd->put_ActiveConnection((_variant_t)((IDispatch*)pCon));
//pCmd->CommandText=_bstr_t(strSql);
//pReS=pCmd->Execute(NULL,NULL,adCmdText);


//操作数据
while(!pReS->adoEOF)
{
//_variant_t  var=pReS->GetCollect("Score");
//var.ChangeType(VT_DECIMAL); //或者"(DECIMAL)var;"(重载了DECIMAL)
//ULONGLONG score=var.decVal.Lo64;


//重载了ULONGLONG,另外如果查到的Score不是数字而是字符串,则需先_bstr_t转换:_bstr_t(pReS->GetCollect("Score"))
ULONGLONG score=pReS->GetCollect("Score");  
cout<<"the Score is "<<score<<endl;
pReS->MoveNext();
}
}
catch(_com_error& e)
{
cout<<"操作数据库时出错:"<<e.Description()<<endl;
goto endA;
}
//释放资源
endA:
try
{
pReS->Close();
pCon->Close();
pReS.Release();   //注意是'.'不是'->'
pCon.Release();
pCmd.Release();
}
catch(_com_error& e)
{
cout<<"释放资源时出错:"<<e.Description()<<endl;
}


CoUninitialize();
system("pause");
return 0;
}


摘要:VC/C++源码,数据库应用,课程管理   一个VC++课程管理程序,MSSQL数据库,可以正确编译,编译运行前请注意以下几点:   1. 建库:   1)新建数据库。打开“Microsoft SQL Server”的“企业管理器”,展开“控制台根目录”到“数据库”,右击“数据库”文件夹选择“新建数据库…”命令,然后建立名为“YJSHData”的数据库。在名称处填写:YJSHData;数据库文件的名称保持默认,在位置处选择c盘根目录,选择后显示“C:\YJSHData_Data.MDF”;事务日志文件名保持默认,在在位置处选择c盘根目录,选择后显示“C:\YJSHData_Log.LDF”;然后单击【确定】。   2)创建表。在“企业管理器”的菜单中选择“工具/SQL Server 查询分析器”命令,进入SQL的查询分析器,单击【文件】中【打开】,选择光盘附带程序中Database文件夹中YJSHDATA记事本所在路径,打开后,查看工具栏中当前显示的数据库是否为master,不是的话选择成为master。然后按“F5”键执行。   3)执行完毕后关闭SQL的查询分析器,再次进入SQL SERVER的企业管理器。查看数据库YJSHData中的表中是否有STUDENTS,TEACHERS,COURSES,CHOICES,如果存在,说明建库完毕。   2. 使用程序   1)数据库生成后,还没有填入信息。信息可以在建库时输入,也可以通过程序中的“添加”功能实现。建议读者在创建完数据库YJSHData后,在STUDENTS,TEACHERS,COURSES,CHOICES四个表中先填入一些信息;因为这样既符合现实使用中的先后逻辑关系,又比通过程序添加信息方便快捷。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值