データベースフィールドのDLL記述を読み込む


1.stdafx.hファイル導入
#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" \
	rename_namespace ("ADODB") \
	rename("EOF","ADOEOF")
using namespace ADODB;

2.データベース管理クラス
ヘッダファイル
#pragma once

//      
class CDataManage
{
public:
	_ConnectionPtr m_pConnect;
	_CommandPtr    m_pCommand;
	_RecordsetPtr  m_pRecord;
	static CString m_ConnectStr;

public:
	CDataManage(void);
	~CDataManage(void);

public:
	//      
	bool InitDataBase();
};

リソースファイル
 
  
 
#include "StdAfx.h"
#include "DataManage.h"

//Access     
//CString CDataManage::m_ConnectStr = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SvrInfo.mdb;Persist Security Info=False");
//Oracle     
CString CDataManage::m_ConnectStr = _T("Provider=MSDAORA.1;Password=×××;User ID=×××;Data Source=wind");

CDataManage::CDataManage(void)
{
}

CDataManage::~CDataManage(void)
{
}

bool CDataManage::InitDataBase()
{
	try
	{
		m_pConnect.CreateInstance(_T("ADODB.Connection"));
		m_pCommand.CreateInstance(_T("ADODB.Command"));
		m_pRecord.CreateInstance(_T("ADODB.Recordset"));
		m_pConnect->ConnectionString = m_ConnectStr.AllocSysString();
		m_pConnect->Open("","","",-1);
	}
	catch(_com_error &err)
	{
		CString ch = err.ErrorMessage();
		
		//MessageBox(NULL,_T("        "),_T("  "),MB_ICONINFORMATION);
		MessageBoxW(NULL,ch,_T("  "),MB_ICONINFORMATION);
		return false;
	}
	return true;
}

3.DBOOperationヘッダファイル、リソースファイルの
ヘッダファイル
 
#pragma once

#ifdef DLL_API
#else
#define DLL_API extern "C" _declspec(dllimport)
#endif


DLL_API CString GetPassword(); 

リソースファイル
#include "stdafx.h"
#include "DataManage.h"
#include "DBOperation.h"

#define DLL_API extern "C" _declspec(dllexport)
#define SQL_GETPWD _T("select password from windtable where accountNumber='123456'")

CString GetPassword()
{
	CDataManage dataManage;
	CString password("");
	dataManage.InitDataBase();
	
	try
	{
		_RecordsetPtr pRecord = dataManage.m_pConnect->Execute(SQL_GETPWD,0,adCmdText);

		if(pRecord != NULL)
		{
			VARIANT val = pRecord->GetFields()->GetItem(_T("password"))->Value;
			if(val.vt != VT_NULL)
			{
				password = val.bstrVal;
			}
		}
	}
	catch (...)
	{
		MessageBox(NULL,_T("       !"),_T("  "),MB_OK);
	}
	
	return password;
}