C++ 连接mysql和连接菜刀access数据库查询

yzmm
621 阅读
C++连接MysqlDemo:
#include "StdAfx.h"
#include "winsock.h"
#include <iostream>
#include "mysql.h"
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
using namespace std;
void getConnecetion(){
	MYSQL mydata;
	mysql_library_init(0,NULL,NULL);//初始化MySQL C API库
	mysql_init(&mydata);//初始化mydata的数据结构,mydata是MYSQL对象
	mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk");//连接选项:添加GBK字符集支持
	//连接函数
	if(mysql_real_connect(&mydata,"localhost","root","caonimei","test",3306,0,0) != NULL){
		cout<<"database connection OK!"<<endl;
		system("pause");
	}
}
void main()
{
	//getConnecetion();
}

C++连接菜刀数据库查询Demo:

#include "stdafx.h"
#include<iostream>
using namespace std;
#include <stdio.h>
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")
int main(int argc, char *argv[]){
  char sql[100];
  char *pwd = "\x0A\xC3\xDC\x0D\x09\x0A\xC2\xEB\x02";
  char *db = "db.mdb";
  if(argc == 2) {
    db = argv[1];
  }
  sprintf(sql, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s", db, pwd);
  _ConnectionPtr m_pConnection;
  CoInitialize(NULL);
    m_pConnection.CreateInstance(__uuidof(Connection));
  try {
    m_pConnection->Open(sql, "", "", adModeUnknown);
  } catch (_com_error e) {
    cout<<e.Description()<<endl;
    return 0;
  }
  _RecordsetPtr m_pRecordset;
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  /**
  获取所有表名
  m_pRecordset = m_pConnection->OpenSchema(adSchemaTables);             
    while(!(m_pRecordset->adoEOF))                  
  {
    _bstr_t table_name = m_pRecordset->Fields->GetItem("TABLE_NAME")->Value; 
    _bstr_t table_type = m_pRecordset->Fields->GetItem("TABLE_TYPE")->Value;                               
    cout<<table_name<<endl; 
    m_pRecordset->MoveNext();             
  }
  m_pRecordset->Close();
  return 0;
  *
  **/
  const _variant_t vtSql = "SELECT * FROM SITE"; //存放的表名为SITE
  try{
    m_pRecordset->Open(vtSql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
  }
  catch(_com_error e)
  {
    cout<<e.Description()<<endl;
  }  
  /**
  获取字段名
  Fields* fields=NULL;
  m_pRecordset->get_Fields(&fields);
  long count = fields->Count;
  BSTR *bstr = new BSTR[count];
  for(long j=0; j<count; j++)
  {
    fields->Item[j]->get_Name(&bstr[j]);
    char *name = _com_util::ConvertBSTRToString(bstr[j]);
    cout<<name<<"  ";
  }
  *得到shell地址字段名为SiteUrl
  **/
    _variant_t var;
    char *value;
    try{
    if(!m_pRecordset->BOF) {
            m_pRecordset->MoveFirst(); 
    } else {
            cout<<"表内数据为空"<<endl;
            return 1;
        }
    while(!m_pRecordset->adoEOF) {
        var = m_pRecordset->GetCollect("SiteUrl"); 
        if(var.vt != VT_NULL) 
          value= _com_util::ConvertBSTRToString((_bstr_t)var);
        cout<<value<<endl; 
        m_pRecordset->MoveNext(); 
        }
  }
    catch(_com_error e)
    {
    cout<<e.Description()<<endl;
    }  
  m_pRecordset->Close();
    m_pRecordset = NULL;  
    if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
	system("pause");
    return 0;
}

评论 (0)

发表评论