- // ADOTest.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- ::CoInitialize(NULL); //初始化COM组件,MFC用AfxOleInit()
- _ConnectionPtr pConn; //定义智能指针
- _CommandPtr pCmd; //定义智能指针
- _RecordsetPtr pRecord; //定义智能指针
- _ParameterPtr pParam; //定义智能指针
- _bstr_t strCnn("Provider=sqloledb.1;Data Source=(local);" //连接MSSQL字符串
- "Initial Catalog=RTU;User Id=sa;Password=5197313;");
- if (FAILED(pConn.CreateInstance("ADODB.Connection"))) //初始ADODB连接
- {
- cout<<"Create Instance failed!"<<endl;
- }
- try
- {
- pConn->Open(strCnn,"","",adConnectUnspecified); //连接数据库,ADO操作中建议语句中要常用try...catch()来捕获错误信息
- }
- catch(_com_error e)
- {
- cout<<"数据库连接失败!"<<endl;
- return 0;
- }
- pCmd.CreateInstance(__uuidof(Command)); //初始_CommandPtr智能指针
- pCmd->ActiveConnection = pConn; //智能指针定位到连接指针.
- //******************************普通sql语句操作****************************************************//
- /*pCmd->CommandText = "SELECT * FROM T_WMETER"; //给CommandText赋SQL语句
- pRecord.CreateInstance(__uuidof(Recordset)); //初始_RecordsetPtr智能指针
- pRecord = pCmd->Execute(NULL, NULL,adCmdText); //执行SQL语句
- if(!pRecord->BOF)
- pRecord->MoveFirst(); //设置指针初始位置
- _variant_t var;
- long Wmeter = 0;
- var = pRecord->GetCollect("WMeterID");
- if(var.vt != VT_NULL)
- Wmeter = var.lVal;
- pRecord->MoveNext(); //移动ADO指针显示下一条数据
- var = pRecord->GetCollect("WMeterID");
- if(var.vt != VT_NULL)
- Wmeter = var.lVal;
- cout<<Wmeter<<endl;*/
- //**********************************************************************************//
- //*******************************测试用存储过程sp_1调用***************************************************//
- _variant_t var; //定义传参变量
- var.intVal = 555; //定义参数值
- pCmd->CommandText = "sp_1"; //指定存储过程
- pParam.CreateInstance(__uuidof(Parameter)); //初始参数指针
- pCmd->Parameters->Refresh(); //刷新参数
- pParam = pCmd->CreateParameter(_bstr_t("@pin"),adInteger,adParamInput,sizeof(int),var.intVal); //创建参数@pin
- pCmd->Parameters->Append(pParam); //添加参数到指针
- pParam = pCmd->CreateParameter(_bstr_t("@pout"),adInteger,adParamOutput,sizeof(int)); //创建参数@pout
- pCmd->Parameters->Append(pParam); //添加参数到指针
- try
- {
- pCmd->Execute(NULL,NULL,adCmdStoredProc); //执行存储过程
- }
- catch(_com_error e)
- {
- cout<<e.Description()<<endl;
- cin.get();
- }
- try
- {
- cout<<pCmd->Parameters->GetItem("@pout")->GetValue().intVal<<endl; //获取OutPut参数的值
- }
- catch(_com_error e)
- {
- cout<<e.Description()<<endl;
- cin.get();
- }
- cin.get();
- return 0;
- }
ADOTestMSSQL
最新推荐文章于 2025-08-11 16:54:15 发布