C++通過ADO呼叫儲存過程
阿新 • • 發佈:2019-01-28
#include <iostream> #include <Windows.h> using namespace std; #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename ("EOF","rsEOF") int main() { _wsetlocale(NULL,L"chs"); CoInitialize(NULL); _ConnectionPtr pConn(__uuidof(Connection)); _RecordsetPtr pRst(__uuidof(Recordset)); pConn->ConnectionString = L"provider=msdasql;driver={sql server};server=xxx.xxx.xxx.xxx;uid=xxx;pwd=xxxxx;database=xxxxx"; pConn->Open("","","",adConnectUnspecified); //這一句是執行儲存過程的關鍵 //GetSchemas2便是儲存過程的名稱 //後面括號中的(2,\"zrs\")便是其引數列表 //注意Open方法的最後一個引數是adCmdStoredProc,而我們平常常用的是adCmdText pRst->Open(L"GetSchemas2(2,\"zrs\")",_variant_t((IDispatch*)pConn),adOpenKeyset,adLockOptimistic,adCmdStoredProc); if(1 == pRst->State) { long n = pRst->GetRecordCount(); wcout<<L"記錄行數:"<<n<<endl; if(n>0) { pRst->MoveFirst(); while(!pRst->rsEOF) { int ID = pRst->GetCollect(L"ID"); wstring sname = (_bstr_t)pRst->GetCollect(L"SchemaName"); int DID = pRst->GetCollect(L"DesignerID"); wstring name = (_bstr_t)pRst->GetCollect(L"DesignerTrueName"); int PIR = pRst->GetCollect(L"Prior"); wcout<<ID<<L" "<<sname.c_str()<<L" "<<DID<<L" "<<name.c_str()<<L" "<<PIR<<endl; pRst->MoveNext(); } } pRst->Close(); } pConn->Close(); pRst.Release(); pConn.Release(); CoUninitialize(); system("pause"); return -1; }