0
回答
已知类包含B类的静态成员,怎么对这个B类对象进行初始化
终于搞明白,存储TCO原来是这样算的>>>   

我现在在做ADO的练习,想把数据库查询的操作保存在一个“工具”里面,也就是单例模式。

代码:

#ifndef _DATABASEUTILS_H_
#define _DATABASEUTILS_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#import "C:\Program Files\Common Files\System\ado\msado15.dll"no_namespace rename("EOF","adoEOF")

#include "stdafx.h"    //基于MFC的
#include <iostream>
#include <string>

using namespace std;
class DataBaseUtils
{
private:
	static DataBaseUtils* p;
	static _ConnectionPtr pConn;
	static _RecordsetPtr pRs;            //这里有问题
	DataBaseUtils();
	~DataBaseUtils();
public :
	static DataBaseUtils* getInstance();
	static void destroyInstance();
	static void show();
	static bool update();
	static _RecordsetPtr query();
};

DataBaseUtils* DataBaseUtils::p=NULL;
_RecordsetPtr DataBaseUtils::pRs("ADODB.Recordset");    //这样的初始化也有问题
DataBaseUtils::DataBaseUtils()
{
}

DataBaseUtils::~DataBaseUtils()
{
}

DataBaseUtils* DataBaseUtils::getInstance()
{
	if(p==NULL)
	{
		if(FAILED(::CoInitialize(NULL)))
		{
			AfxMessageBox("Com错误");
		}
		p=new DataBaseUtils();
		CString strSQL="Driver=MySQL ODBC 5.1 Driver; SERVER=localhost; DATABASE=test; UID=root; PASSWORD=123456;OPTION=3;";
		pConn.CreateInstance(__uuidof(Connection));
		pConn->CursorLocation=adUseClient;
		pConn->Open(_bstr_t(strSQL),"","",-1);
		AllocConsole();  
		freopen( "CONOUT$", "w+t", stdout);// 申请写
		freopen( "CONIN$", "r+t", stdin);  // 申请读
	}
	return p;
}

void DataBaseUtils::destroyInstance()
{
	if(p!=NULL)
	{
		delete p;
		p=NULL;	
		FreeConsole();
	}
	if(pRs!=NULL)
	{
		pRs->Close();
		pRs=NULL;
	}
	if(pConn!=NULL)
	{
		pConn->Close();
		pConn=NULL;
	}
}

void DataBaseUtils::show()
{
	if(p!=NULL)
		cout<<p<<endl;
}


#endif
现在真的对_RecordsetPtr 的初始化感到很头疼,求帮助

<无标签>
举报
稀饭桶子
发帖于4年前 0回/93阅
顶部