📄 madopacket.cpp
字号:
/*
**********************************************************************************
* *
* 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 + -