⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 madopacket.cpp

📁 目前只做了基于SQL Server的ADO封装
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*

 **********************************************************************************
 *                                                                                *
 * Copyright (c) 2008, RedRabbitHorse                                             *
 * All rights reserved                                                            *
 *                                                                                *
 * Filename: AdoPacket.cpp                                                            *
 * Filelabel: _MSW_ADOPACKET_CPP                                                      *
 * Description:	Declaration all funtion of ADO as a class.                        *
 *                                                                                *
 * Current Version: 0.91                                                           *
 * Author: Ma Shiwen                                                              *
 * End date: 02-10-2008                                                           *
 *                                                                                *
 * Instead for:  0.9                                                                 *
 * Original Author: Ma Shiwen                                                     *
 * End date: 02-06-2008                                                           *
 *                                                                                *
 **********************************************************************************

*/

#include "stdafx.h"
#include "madopacket.h"
mswADO::mswADO()
{
	::CoInitialize(NULL);
	Initialize();
}

mswADO::~mswADO()
{
	UnInitialize();
	::CoUninitialize();
}

void mswADO::Initialize()
{
	m_pConnection = NULL;
	m_pRecordset = NULL;
	m_pConnection.CreateInstance(__uuidof(Connection));
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	m_lCount = 0;
	m_lFieldCount = 0;
}

bool mswADO::Connect()
{
	CString str;
	str.Format("Provider=SQLOLEDB.1;Integrated Security=SSPI;\
		Persist Security Info=False;Initial Catalog=%s;Data Source=%s", m_strDatabase, m_strServer);

	m_pConnection->ConnectionString = _bstr_t(str);//_bstr_t(str.GetBuffer(str.GetLength()));

	m_strLastError.Empty();

	try
	{
	
		m_pConnection->Open(m_pConnection->ConnectionString, "", "", adConnectUnspecified);
	}
	catch(_com_error &e)
	{
		GetError(e);
		return false;
	}
	
	return true;
}


void mswADO::ExitConnection()
{
	if (m_pConnection->GetState() != adStateClosed)
	{	
		m_pConnection->Close();
	}
}

void mswADO::SetServer(CString &ser)
{
	m_strServer = ser;
}

void mswADO::SetDatabase(CString &db)
{
	m_strDatabase = db;
}

void mswADO::SetPW(CString &pw)
{
	m_strPW = pw;
}

void mswADO::SetUser(CString &user)
{
	m_strUser = user;

}

CString mswADO::GetServer()
{
	return m_strServer;
}

CString mswADO::GetDatabase()
{

	return m_strDatabase;
}

CString mswADO::GetUser()
{
	return m_strUser;
}

void mswADO::SetTable(CString &table)
{
	m_strTable = table;
}

CString mswADO::GetTable()
{
	return m_strTable;
}

bool mswADO::OpenTable()
{
	CString str;
	str.Format("SELECT * FROM %s", m_strTable.GetBuffer(m_strTable.GetLength()));
	m_strLastError.Empty();
	try
	{
		m_pRecordset->Open(_bstr_t(str), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
	}
	catch(_com_error &e)
	{
		GetError(e);
		m_lCount = 0;
		m_lFieldCount = 0;
		return false;
		
	}
	m_lCount = GetCount();
	m_lFieldCount = GetFieldCount();
	
	return true;
}



CString mswADO::GetValue(CString &str)
{
	_variant_t var;
	try
	{	
		var = m_pRecordset->GetCollect(_variant_t(m_strField));
	}
	catch(_com_error &e)
	{
		GetError(e);
		str.Empty();
		return str;
	}
	if (var.vt == VT_BSTR )
	{
		str = (char *)(_bstr_t)var;
	}
	else
	{
		str.Empty();
		return str;
	}
	return str;
}

void mswADO::UnInitialize()
{
	m_pRecordset->Close();
	m_pConnection->Close();
	m_pRecordset.Release();
	m_pConnection.Release();
}

double mswADO::GetValue(double &buf)
{
	_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect(_bstr_t(m_strField));
	}
	catch(_com_error &e)
	{
		GetError(e);
		buf = 0;
		return 0;
	}
	if (var.vt == VT_R8)
	{
		buf = var.dblVal;
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;
}



float mswADO::GetValue(float &buf)
{
	_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect(_bstr_t(m_strField));
	}
	catch(_com_error &e)
	{
		GetError(e);
		buf = 0;
		return 0;
	}
	if (var.vt == VT_R4)
	{
		buf = var.fltVal;
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;

}

int mswADO::GetValue(int &buf)
{
	_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect(_bstr_t(m_strField));
	}
	catch(_com_error &e)
	{
		GetError(e);
		buf = 0;
		return 0;
	}
	if (var.vt == VT_INT)
	{
		buf = var.intVal;
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;
}

long mswADO::GetValue(long &buf)
{
	_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect(_bstr_t(m_strField));
	}
	catch(_com_error &e)
	{
		GetError(e);
		buf = 0;
		return 0;
	}
	if (var.vt == VT_I4)
	{
		buf = var.lVal;
	}
	else
	{
		buf = 0;
		return buf;
	}
	return buf;

}

bool mswADO::SetValue(CString &str)
{
	_variant_t var;
	var = _variant_t(str);
	try
	{	
		m_pRecordset->PutCollect(_variant_t(m_strField), var);
	}
	catch(_com_error &e)
	{
		GetError(e);

		return false;
	}
	return true;
}


bool mswADO::SetValue(double buf)
{
	_variant_t var;
	var = _variant_t(buf);
	try
	{	
		m_pRecordset->PutCollect(_variant_t(m_strField), var);
	}
	catch(_com_error &e)
	{
		GetError(e);

		return false;
	}
	return true;
}

bool mswADO::SetValue(float buf)
{
	_variant_t var;
	var = _variant_t(buf);
	try
	{	
		m_pRecordset->PutCollect(_variant_t(m_strField), var);
	}
	catch(_com_error &e)
	{
		GetError(e);

		return false;
	}
	return true;
}


bool mswADO::SetValue(int buf)
{
	_variant_t var;
	//var = _variant_t(buf);
	var.vt = VT_I4;
	var.intVal = buf;
	try
	{	
		m_pRecordset->PutCollect(_variant_t(m_strField), var);
	}
	catch(_com_error &e)
	{
		GetError(e);

		return false;
	}
	return true;
}

void mswADO::SetField(CString &field)
{
	m_strField = field;
}

CString mswADO::GetValue(CString &field, CString &buf)
{
	_variant_t var;
	try
	{
		var = m_pRecordset->GetCollect(_variant_t(field));
	}
	catch(_com_error &e)
	{
		GetError(e);		
		return buf;
	}
	if (var.vt == VT_BSTR)
	{
		buf = (char *)(_bstr_t)var;
		
	}
	else
	{
		buf.Empty();
		return buf;
	}
	return buf;
}

double mswADO::GetValue(CString &field, double &buf)
{
	_variant_t var;
	m_strLastError.Empty();
	try
	{
		var = m_pRecordset->GetCollect(_variant_t(field));
	}
	catch(_com_error &e)
	{
		GetError(e);
		return buf;
	}
	if (var.vt == VT_R8)
	{
		buf = var.dblVal;
		
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;

}

float mswADO::GetValue(CString &field, float &buf)
{
	_variant_t var;
	m_strLastError.Empty();
	try
	{
		var = m_pRecordset->GetCollect(_variant_t(field));
	}
	catch(_com_error &e)
	{
		GetError(e);
		return buf;
	}
	if (var.vt == VT_R4)
	{
		buf = var.fltVal;
		
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;
}

int mswADO::GetValue(CString &field, int &buf)
{
	_variant_t var;
	m_strLastError.Empty();
	try
	{
		var = m_pRecordset->GetCollect(_variant_t(field));
	}
	catch(_com_error &e)
	{
		GetError(e);
		return buf;
	}
	if (var.vt == VT_I4)
	{
		buf = var.intVal;
		
	}
	else
	{
		buf = 0;
		return 0;
	}
	return buf;
}

bool mswADO::SetValue(CString &field, CString &buf)
{
	_variant_t var;
	var = _variant_t(buf);
	try
	{
		m_pRecordset->PutCollect(_variant_t(field), var);
	}
	catch(_com_error &e)
	{
		GetError(e);
		return false;
	}
	return true;
}

bool mswADO::SetValue(CString &field, double buf)
{
	_variant_t var;
	var = _variant_t(buf);
	try
	{
		m_pRecordset->PutCollect(_variant_t(field), var);
	}
	catch(_com_error &e)
	{
		GetError(e);
		return false;
	}
	return true;

}

bool mswADO::SetValue(CString &field, float buf)
{
	_variant_t var;
	var = _variant_t(buf);
	try
	{
		m_pRecordset->PutCollect(_variant_t(field), var);
	}
	catch(_com_error &e)
	{
		GetError(e);
		return false;
	}
	return true;

}

bool mswADO::SetValue(CString &field, int buf)
{
	_variant_t var;
	//var = _variant_t(buf);
	var.vt = VT_I4;
	var.intVal = buf;

	try
	{
		m_pRecordset->PutCollect(_variant_t(field), var);
	}
	catch(_com_error &e)
	{
		GetError(e);
		return false;
	}
	return true;

}

CString mswADO::GetValue(char *field, CString &buf)
{
	_variant_t var;
	m_strLastError.Empty();
	try
	{
		var = m_pRecordset->GetCollect(_variant_t(field));
	}
	catch(_com_error &e)
	{
		GetError(e);
		return buf;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -