C++ ADO操作数据库动态库

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MESDLL_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// MESDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef MESDLL_EXPORTS
#define MESDLL_API __declspec(dllexport)
#else
#define MESDLL_API __declspec(dllimport)
#endif
#include<iostream>
#include<string>
#import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
using namespace std;

class MESDLL_API DbHelperDLL {
    
    
public:

public:
	DbHelperDLL(void);
	DbHelperDLL::~	DbHelperDLL(void);
	string m_strConnect;//数据库服务器
	string m_strUserName;//用户名
	string m_strPassword;//密码
	_ConnectionPtr m_pConn;//链接数据库句柄
	_RecordsetPtr pRst;
	bool m_bconnectState;

public:
	BOOL InitDB();
	_RecordsetPtr DB_select(string p_strCmd);
	BOOL DB_update(string p_strCmd);
	BOOL DB_insert(string p_strCmd);
	BOOL DB_close();
	int DB_getState();
};

// MESDLL.cpp : 定义 DLL 的导出函数。
//

#include "pch.h"
#include "framework.h"
#include "DbHelperDLL.h"
#include <codecvt>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
// 这是已导出类的构造函数。
DbHelperDLL::DbHelperDLL()
{
    
    
	m_bconnectState = false;
	m_pConn = NULL;
    return;
}

DbHelperDLL::~DbHelperDLL(void)
{
    
    

}

int DbHelperDLL:: DB_getState()
{
    
    
	if(m_pConn == NULL)
	{
    
    
		return -1;
	}
	return m_pConn->State;
}
BOOL DbHelperDLL:: InitDB()
{
    
    
	if(m_pConn!=NULL)
	{
    
    
		int t_state = m_pConn->State;
		if(adStateOpen == t_state)
		{
    
    
			return true;
		}
	}
	::CoInitialize(NULL);//初始化
	try
	{
    
    
		m_pConn.CreateInstance("ADODB.Connection");
		_bstr_t str_connect = "Provider=SQLOLEDB;Data Source=LEGENDLI;Initial Catalog=testbase;User ID=sa;Password=1";
		m_pConn->Open(str_connect,"" , "" , 0);
	}
	catch (...)
	{
    
    
		//m_pConn->State = adStateClosed;
		DB_close();
		return false;
	}
	return true;
}
//查询指令
_RecordsetPtr DbHelperDLL:: DB_select(string p_strCmd)
{
    
    
	if(m_pConn==NULL)
	{
    
    
		return NULL;
	}
	if(p_strCmd.find("delete")!=-1  || p_strCmd.find("drop")!=-1)
	{
    
    
		return NULL;
	}
	try
	{
    
    
		pRst = m_pConn->Execute(p_strCmd.c_str() , NULL , 1);
	}
	catch (...)
	{
    
    
		//m_pConn->State = adStateClosed;
		DB_close();
		return NULL;
	}
	
	if(pRst==NULL)
	{
    
    
		return NULL;
	}
	return pRst;
}
//更新
BOOL DbHelperDLL::DB_update(string p_strCmd)
{
    
    
	if(m_pConn==NULL)
	{
    
    
		return false;
	}
	if(p_strCmd.find("delete")!=-1  || p_strCmd.find("drop")!=-1)
	{
    
    
		return false;
	}
	try
	{
    
    
		pRst = m_pConn->Execute(p_strCmd.c_str() , NULL , 1);
		
	}
	catch (...)
	{
    
    
		//m_pConn->State = adStateClosed;
		DB_close();
		return false;
	}
	
	if(pRst==NULL)
	{
    
    
		return false;
	}
	else
	{
    
    
		return true;
	}
}
//插入
BOOL DbHelperDLL::DB_insert(string p_strCmd)
{
    
    
	if(m_pConn==NULL)
	{
    
    
		return false;
	}
	if(p_strCmd.find("delete")!=-1  || p_strCmd.find("drop")!=-1)
	{
    
    
		return false;
	}
	try
	{
    
    
		pRst = m_pConn->Execute(p_strCmd.c_str() , NULL , 1);
	}
	catch (...)
	{
    
    
		DB_close();
		return false;
	}
	
	if(pRst==NULL)
	{
    
    
		return false;
	}
	else
	{
    
    
		return true;
	}
}
//关闭
BOOL DbHelperDLL::DB_close()
{
    
    
	try
	{
    
    
		m_pConn->Close();
	}
	catch (...)
	{
    
    
		return true;
	}
	return true;
}

猜你喜欢

转载自blog.csdn.net/doubleintfloat/article/details/143082873