注册
windows7(x64)下vs2010建立c++工程,连接达梦数据库
培训园地/ 文章详情 /

windows7(x64)下vs2010建立c++工程,连接达梦数据库

萌仔 2025/06/26 33 0 0

首先需要安装好以下软件
1)vs2010
达梦数据库v8(x64)

windows7(x64)下vs2010建立c++工程,连接达梦数据库步骤如下
1.开始菜单中点击“Microsoft ODBC管理员”,打开“ODBC 数据源管理器”界面;
2.“ODBC 数据源管理器”界面中,系统DSN选项中,添加系统数据源,选择“DM8 ODBC DRIVER”;
3.点击配置,打开“DM Server ODBC数据源配置V8”界面,输入数据源名称、服务器IP、端口号,点击测试,输入登录ID和密码,测试数据源连接成功;
4.vs2010建立64位工程,示例代码如下所示:
/*
此工程是使用ODBC方式连接达梦数据库
*/

#include <iostream>
#include <string>
//#include <atlbase.h> // 尝试过可以不添加此头文件
#include <fstream>

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") // important! 使用ado需要添加此动态库

void testSQL(const _ConnectionPtr& pConnection, _RecordsetPtr redset)
{
std::string strSql("select * from JCSJ_CARRIER_WEAPON"); // 待执行的sql语句

try
{
redset.CreateInstance(__uuidof(Recordset));
redset->CursorLocation = adUseClient;
HRESULT hr = redset->Open( // 执行SQL语句
(_bstr_t)(strSql.c_str()),
pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);

if (FAILED(hr))
{
std::cout << "创建记录集失败" << std::endl;
return;
}

VARIANT varVARIANT;
varVARIANT.vt = VT_DISPATCH;
varVARIANT.pdispVal = NULL;
redset->PutActiveConnection(varVARIANT);

std::ofstream outfile;
outfile.open("out.txt", std::ios::out | std::ios::trunc);

_variant_t var;
while (!redset->adoEOF) // 读取SQL执行结果
{
var = redset->GetCollect("WEAPONCODE");
if (var.vt != VT_NULL)
{
std::string strout((const char*)_bstr_t(var));
std::cout << "WEAPONCODE: " << strout << std::endl;
outfile << strout << std::endl;
}

var = redset->GetCollect("CARRIER");
if (var.vt != VT_NULL)
{
std::string strout((const char*)_bstr_t(var));
std::cout << "CARRIER: " << strout << std::endl;
outfile << strout << std::endl;
}
redset->MoveNext();
}

outfile.close();
}
catch (_com_error& e)
{
_bstr_t bstrError(e.Description());
std::string strError = bstrError;
std::cout << strError << std::endl;
}
}

int main()
{
bool bSuccess = false;

_ConnectionPtr pConnection;
CoInitialize(NULL);
pConnection.CreateInstance(__uuidof(Connection));
char chDBLink[1024]={"DSN=DMDB;Server=172.16.10.5;TCP_PORT=5236;UID=KTMNXL;PWD=dm00000000;"}; // 在这里输入你想要的数据库ip,端口号,数据库名,密码

try
{
pConnection->Open(chDBLink,"","",adModeUnknown); // 打开数据库
if (NULL != pConnection)
{
bSuccess = true;
std::cout << "conn success" << std::endl;

_RecordsetPtr redset;
testSQL(pConnection, redset); // 测试sql是否能够正常执行
}
else
{
bSuccess = false;
}
}
catch (_com_error &e)
{
std::string strerr = e.Description();
std::cout << strerr << std::endl;
}

return 0;
}

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服