window上的SQL server2008例子:
// ConSQL.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <tchar.h>
#include<iostream>
#include <string>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
using namespace std;
class ADOConn
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn(){};
void OnInitADOConn();//初始化连接
void ExecuteSQL(_bstr_t bstrSQL);
};
ADOConn::ADOConn()
{
CoInitialize(NULL); //初始化必不可少
HRESULT hr=m_pConnection.CreateInstance(_uuidof(Connection));
if(FAILED(hr))
cout<<"_ConnectionPtr对象指针实例化失败!!!"<<endl;
}
void ADOConn::OnInitADOConn()
{
try
{ //在COM接口中,参数若为字符串, 一定要用BSTR
_bstr_t con_bstr="Driver={sql server};server=127.0.0.1,1433;uid=mysa;pwd=11;database=CTXSYS;";
m_pConnection->Open(con_bstr,"","",adModeUnknown);// adModeUnknown 缺省,当前的许可权未设置
}
catch(_com_error &e)
{cout<<e.Description()<<endl;}
}
void ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
m_pRecordset=m_pConnection->Execute(bstrSQL, NULL, adCmdText);
}
int main(int argc, _TCHAR* argv[])
{
_bstr_t strSql="select * from TB_SHANGPIN";//选择表的SQL语句
ADOConn con;
con.OnInitADOConn();
con.ExecuteSQL(strSql);
string res;
while(!con.m_pRecordset->adoEOF)
{
res = (_bstr_t)con.m_pRecordset->GetFields()->GetItem ("SPBH")->Value;
res +="\t";
res += (_bstr_t)con.m_pRecordset->GetFields()->GetItem ("SPMC")->Value;
res +="\t";
res += (_bstr_t)con.m_pRecordset->GetFields()->GetItem ("SPJM")->Value;
res +="\t";
res += (_bstr_t)con.m_pRecordset->GetFields()->GetItem ("SPLB")->Value;
cout<<res<<endl;;
con.m_pRecordset->MoveNext();
}
return 0;
}
linux上的Mysql8.0例子:
/*
* 输出指定表 tbname 的全部数据
* 编译选项: g++ -std=c++11 xdevapi.cpp -lmysqlcppconn8
× mysql 版本: 8.0.11
*/
#include <mysqlx/xdevapi.h>
#include <iostream>
using namespace mysqlx;
int main()
{
Session mySession("localhost", 33060, "usrname", "pwd"); //数据库用户名:usrname,密码pwd
// Switch to use schema 'test'
mySession.sql("USE dbname").execute();//数据库名:dbname
// Use an SQL query to get the result
auto myResult = mySession.sql("SELECT *from tbname").execute(); // 表名:tbname
// Gets the row and prints the first column
std::list<Row> allrow = myResult.fetchAll();
for (std::list<Row>::iterator it=allrow.begin(); it != allrow.end(); ++it)
{
for(int i=0;i<(*it).colCount();i++)
std::cout << (*it)[i]<<"\t";
std::cout<<std::endl;
}
}
MySQL Connector/C++开发文档: https://dev.mysql.com/doc/dev/connector-cpp/8.0/usage.html
guide手册: https://dev.mysql.com/doc/x-devapi-userguide/en/using-sql.html
c++连接Mysql需要的库下载地址: https://dev.mysql.com/downloads/connector/cpp/
以下是下载安装过程:
解压后的文件
解压后把 include 文件夹中的内容复制到 /usr/include
把lib64 文件夹中的内容复制到 /usr/lib
否则就要在编译时加上路径。