求C++调用存储过程代码,数据库是SQL2008,开发环境是VS2008,把附带的类库及其他文件最好都标明

2024-11-17 02:51:50
推荐回答(3个)
回答1:

#import "c:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") // 引入ado库,才能操作数据库,这个库系统本身存在,只要引入就行

CoInitialize(NULL);  // CoInitialize可以使对象直接与线程连接,得到最高的性能,与CoUninitialize()配对使用

_ConnectionPtr m_pConnection(_uuidof(Connection)); // 数据库连接指针

_RecordsetPtr m_pRecordset(_uuidof(Recordset)); // 记录集,保存数据库语句的执行结果

try{

m_pConnection->Open("DSN=myDB","","",0); // 打开数据库,DSN是你要连接ODBC数据源的名称,添加ODBC数据源应该会吧,我附上了一张截图

CString strExe = L"select * from myData";             // 数据库查询语句

m_pRecordset = m_pConnection->Execute(strExe.GetBuffer(strExe.GetLength()), NULL, adCmdText); // 执行语句,adCmdText是执行的命令方式

while(!m_pRecordset->adoEOF) // 还有下一条记录

{

_variant_t TheValue; // _variant_t封装并管理VARIANT数据类型

TheValue = m_pRecordset->GetCollect("日期"); // 这里是获取日期操作

m_pRecordset->MoveNext(); // 移动到下一条记录

}

}catch(_com_error e)

{

AfxMessageBox(e.ErrorMessage()); // 出错提示

}

m_pRecordset->Close();  // 记得关闭

m_pConnection->Close();

m_pRecordset = NULL;

m_pConnection = NULL;

CoUninitialize();

回答2:

1楼哥们贴的代码缺了2行、、、、
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
总得实例化以后才能使用对象啊

通常是在StdAfx.h文件进行#import 。。。。
然后在类声明里面声明
_ConnectionPtr m_pConnection(_uuidof(Connection));
_RecordsetPtr m_pRecordset(_uuidof(Recordset));
在类构造函数里CoInitialize(NULL);,在析构函数CoUninitialize();
至于实例化,就看你要的是全局对象,还是在某个函数中使用了,看代码了

回答3:

.......