📄 ado.cpp
字号:
// ADODB1.cpp: implementation of the ADODB class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADO.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADODB::ADODB()
{
strSQL="";
DataBaseFile="";
bOpen=0;
}
ADODB::~ADODB()
{
pPtr=NULL;
::CoUninitialize();
}
bool ADODB::Init()
{
::CoInitialize(NULL);
if (FAILED(pPtr.CreateInstance(__uuidof(Recordset))))
{
AfxMessageBox("Create Instance failed!");
return 0;
}
else return 1;
}
bool ADODB::Connect()
{
if(bOpen)
{
::AfxMessageBox("数据库已经打开,如果要重新连接请先关闭!");
return 0;
}
if(DataBaseFile=="")
{
::AfxMessageBox("未配置数据库文件,请先设定DataBaseFile");
return 0;
}
if(strSQL=="")
{
::AfxMessageBox("未配置SQL命令,请先设定strSQL");
return 0;
}
CString strSRC;
strSRC="DRIVER=Microsoft Access Driver (*.mdb);DBQ=" + DataBaseFile + ";PWD="+PassWord;
//strSRC="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DataBaseFile+";Persist Security Info=False";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
HRESULT hr;
try
{
hr=pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
pPtr.Release();
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return 0;
}
bOpen=1;
return 1;
}
_bstr_t ADODB::GetFilds(char* Collect)
{
_variant_t vFieldValue=pPtr->GetCollect(Collect);
return _bstr_t(vFieldValue);
}
bool ADODB::PutFilds(char* Collect,char* ver)
{
if(bOpen)
{
pPtr->Fields->GetItem(_variant_t(Collect))->Value=_bstr_t(ver);
return 1;
}
else return 0;
}
bool ADODB::OpenTable(char* TableName)
{
if(TableName!="")
{
strSQL="SELECT * FROM "+CString(TableName);
if(!Connect())
{
CString a;
a.Format("数据表%s打开失败!",TableName);
AfxMessageBox(a);
return 0;
}
}
else return 0;
return 1;
}
bool ADODB::CloseTable(char* TableName)
{
pPtr->Close();
bOpen=0;
return 1;
}
//得到可执行文件的路径
CString ADODB::GetAppPath()
{
TCHAR exeFullName[MAX_PATH];
::GetModuleFileName(NULL,exeFullName,MAX_PATH);
CString mPath=exeFullName;
int mPos=mPath.ReverseFind('\\');
if(mPos==-1)return ""; //没有发现
mPath=mPath.Left(mPos);
if(mPath.Right(1) != "\\") mPath = mPath + "\\";
return mPath;
}
short ADODB::GetEOF()
{
if(bOpen) return pPtr->EndOfFile;
else return 0;
}
short ADODB::GetBOF()
{
if(bOpen) return pPtr->BOF;
else return 0;
}
long ADODB::MoveFirst()
{
if(bOpen) return pPtr->MoveFirst();
else return 0;
}
long ADODB::MoveLast()
{
if(bOpen) return pPtr->MoveLast();
else return 0;
}
long ADODB::MoveNext()
{
if(bOpen) return pPtr->MoveNext();
else return 0;
}
long ADODB::MovePrev()
{
if(bOpen) return pPtr->MovePrevious();
else return 0;
}
bool ADODB::close()
{
if(bOpen)
{
pPtr->Close();
bOpen=0;
}
else return 0;
return 1;
}
long ADODB::AddNew()
{
if(bOpen) return pPtr->AddNew();
else return 0;
}
long ADODB::Delete()
{
if(bOpen) return pPtr->Delete(adAffectCurrent);
else return 0;
}
long ADODB::Update()
{
if(bOpen) return pPtr->Update();
else return 0;
}
long ADODB::GetRecordCount()
{
if(bOpen) return pPtr->GetRecordCount();
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -