混合编程--fortran调用C++采用ODBC形式连接MYSQL数据库

前言

最近项目中用到了fortran语言,需要与数据库连接,将fortran程序计算的结果存入数据库以便后期需要,在调研的时候有两种方法:1,利用fortran系列的f90sql连接数据库;2,采用混合编程,就是采用某种语言与数据库连接,再用fortran调用接口函数,进入视线的有python,c++,c;最后采用第二种方案,采用fortran + C++的形式;理由如下:
1.本渣对fortran不熟悉,且f90sql在网上资料比较少,应该不是很好弄;
2.我们项目组的fortran程序运行环境是vs2010+ivf,所有采用第二种方法,一样的IDE应该会好弄一点;

fortran调用C++函数

由于我们的fortran与C++运行环境IDE都是vs2010,那就省了很多事了,直接参考链接[link text]https://wenku.baidu.com/view/d5a96a3911661ed9ad51f01dc281e53a580251c7.html主要是设置单解决方案多项目,设置项目依赖项,设置多线程调试等,实现简单的fortran调用C++中的sub函数,注意设置你的操作系统的位数与当前项目平台位数是否符合;

C++连接数据库

原来做项目都是用java的类似mybatis的框架直接连,这就很舒服,但是这次用c++就很难受,用c++的方法连接数据库有两种方式:
1.利用mysql的API连接数据库;
2.利用ODBC数据源连接;
两种方法在网上都有很多方法可自行度娘,第一种方法不知怎么的在我的电脑上运行不了,代码都是网上已经验证过的代码在我的电脑上运行之后就有0xc000007b无法正常启动错误,我也照着网上的方法找了一些东西,修复之后还是没有解决,一气之下放弃这种方法,第二种是利用ODBC数据源方式,如何配置ODBC数据源请参考[link text](http://jingyan.baidu.com/article/5553fa82e783d965a23934e7.html)关于连接代码可以参考[link text](http://blog.csdn.net/lbcab/article/details/51329207)这篇博客的优点是面向对象式编程,增删查该的代码都有,可以作为参考;最坑的是:我建立了64bit的ODBC数据源(因为我的mysql以及我的操作系统都是64bit的),连接的时候告诉我找不到数据源,后来看到网上的帖子讲要配置32bit的ODBC,我就下载了32bit的MYSQL Connector,后来就连上了;至今没有搞懂为什么??如果你也连不上,那就试试32bit的odbc吧。

实现调用代码:

//使用封装类的方式对数据库进行操作,可以实现执行sql语句
//直接连接数据库,可以使用,
_ConnectionPtr  m_pConnection;// 初始化COM,创建ADO连接等操作
CoInitialize(NULL);   
m_pConnection.CreateInstance(__uuidof(Connection));   
try 
{  
//设置连接时间  
m_pConnection->ConnectionTimeout = 5;   
}  
catch(_com_error &e)  
{  
    MessageBox(NULL, e.Description(), _T(""), MB_OK); 
} 

//使用封装类的方式对数据库进行操作,可以实现执行sql语句
//OpenDatabase()的前提条件是m_pConnection不为空
CDataOperator data;
if(data.OpenDatabase("3dvisualization_test","root","123456")){
    cout<<"CONNECT OK"<<endl;
}else{
    cout<<"connect error"<<endl;
}
bool flag = data.ExecuteSQL("INSERT INTO experiment VALUES (26, 'Bill', 23, 33,43)");
if(flag){
    std::cout<<"插入成功"<<std::endl;
}else{
    std::cout<<"插入失败"<<std::endl;   
}
system("pause");

调用运行之后就可以显示插入成功了;

写在最后

最后就是将两块的东西整合到一个方面,尽量做到代码的服用,实现面向对象的编程,已提高效率;这只是一个demo,后来如果遇到什么问题,再来更新。。。就这样吧!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值