亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? accessdb.cpp

?? 論壇中有許多操作Access數據庫的介紹、說明
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MyDB.cpp: implementation of the CAccessDB class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

//#include <windows.h>
#include "AccessDB.h"

#ifdef _MYSYSTEMAPI_
#include "psapi.h"

#endif

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAccessDB::CAccessDB(char * DBPath,char *DBName,int OptFlag)
{
	if((AfxGetModuleState()->m_dwVersion)!=0x0601)
	{
		AfxGetModuleState()->m_dwVersion=0x0601;
		AfxDaoInit();
	}

//	m_DSName=NULL;
//	m_DataSetSql=NULL;
	m_TableCount=0;

	if(DBPath!=NULL&&DBName!=NULL)
	{
		sprintf(m_DBName,"%s",DBName);
		sprintf(m_DBPath,"%s",DBPath);
	}
	
	if(OptFlag)
	{
		try
		{
			CDaoWorkspace::CompactDatabase(_T(DBName),_T(".\\tmp.mdb"),dbLangGeneral,0);
			char szCommand[100];
			memset(szCommand,0,sizeof(szCommand));
			sprintf(szCommand,"del %s",DBName);
			system(szCommand);
			memset(szCommand,0,sizeof(szCommand));
			sprintf(szCommand,"rename tmp.mdb %s",DBName);
			system(szCommand);
		}
		catch(CDaoException *e)
		{
			AfxMessageBox(e->m_pErrorInfo->m_strDescription);
			e->Delete();
		}
	}

//	m_DataSet.m_pDatabase->Create("hello");

}

CAccessDB::~CAccessDB()
{
	if(m_DataSet.m_pDatabase->IsOpen())
		m_DataSet.m_pDatabase->Close();

	if(m_DataSet.IsOpen())
		m_DataSet.Close();

	if(m_DB.IsOpen())
		m_DB.Close();
}

int CAccessDB::ConnectDB(char * DsnName)
{
	CString path,DSNName;

	if(DsnName==NULL)
		DSNName.Format("%s",m_DBName);
	else
		DSNName.Format("%s",DsnName);

	DSNName.Replace(".mdb","");

	path.Format("DSN=%s;DBQ=%s\\%s;DEFAULTDIR=D:\\",
				DSNName.GetBuffer(0),
				m_DBPath,
				m_DBName);

	SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,
						"Microsoft Access Driver (*.mdb)\0",
						path.GetBuffer(0));

	return 1;

}

int CAccessDB::OpenDB(LPCTSTR lpszName,BOOL bExclusive,
					   BOOL bReadOnly,LPCTSTR lpszConnect)
{
	int ret=0;
	CString ErrMsg;

	if(m_DB.IsOpen())
		return TRUE;

	try
	{
		m_DB.Open(lpszName,bExclusive,bReadOnly,lpszConnect);
//		m_DB.Open(lpszName);
	}
	catch(CDaoException *e)
	{
		ErrMsg.Format("\t%s!\n\t請檢查數據庫狀態是否正常,或連接的用戶密碼是否正確!",
					e->m_pErrorInfo->m_strDescription);
        MessageBox(0,ErrMsg,"打開數據庫失敗",MB_OK|MB_ICONERROR);
// Delete the incomplete recordset object
		ret=e->m_pErrorInfo->m_lErrorCode;
        e->Delete();
//		CloseDB();
		return ret;
	}

	return (int)FreshDBInfo();

}

BOOL CAccessDB::CloseDB()
{
	if(m_DataSet.IsOpen())
		m_DataSet.Close();

	m_DB.Close();
	return 1;
}


int CAccessDB::ExecSQL(unsigned char *szSql)
{

	try
	{
		m_DB.Execute((const char *)(LPCTSTR)szSql);
	}
	catch(CDaoException * e)
	{
		CString msg;
		int retcode=e->m_pErrorInfo->m_lErrorCode;
		msg.Format("%s\n%s",
				(char *)szSql,
				e->m_pErrorInfo->m_strDescription);
		e->Delete();

		if(retcode==3065)
		{
			return 0;
		}
		AfxMessageBox(msg);

//		m_DB.Close();
		return 0;

	}
	return 1;
}


int CAccessDB::GetTableCount()
{

	return m_TableCount;
}

int CAccessDB::GetFieldCount(char *TbName)
{
	CDaoTableDef m_MyTable(&m_DB);
	m_MyTable.Open(TbName);
	int iCount=m_MyTable.GetFieldCount();

	m_MyTable.Close();

	return iCount;
}

int CAccessDB::GetRowCount(char *TbName)
{
	for(int i=0;i<m_TableCount;i++)
	{
		CDaoTableDefInfo TableInfo;
		m_DB.GetTableDefInfo(i,TableInfo,AFX_DAO_ALL_INFO);
		if((strcmp(TableInfo.m_strName,TbName))!=0)
			continue;
		else
			return TableInfo.m_lRecordCount;
	}
	
	return -1;
}

LPCTSTR CAccessDB::Str2Bool(BOOL bFlag)
{
	return bFlag ? _T("TRUE") : _T("FALSE");
}

CString CAccessDB::Str2Variant(const COleVariant &var)
{
	CString strRet;
	strRet = _T("Fish");

	switch(var.vt)
	{
	case VT_EMPTY:
	case VT_NULL:
		strRet=_T("NULL");
		break;
	case VT_I2:
		strRet.Format(_T("%hd"),V_I2(&var));
		break;
	case VT_I4:
		strRet.Format(_T("%d"),V_I4(&var));
		break;
	case VT_R4:
		strRet.Format(_T("%e"),(double)V_R4(&var));
		break;
	case VT_R8:
//		strRet.Format(_T("%e"),V_R8(&var));
		strRet.Format(_T("%.2f"),V_R8(&var));
		break;
	case VT_CY:
		strRet=COleCurrency(var).Format();
		break;
	case VT_DATE:
		strRet=COleDateTime(var).Format(_T("%y-%m-%d"));
		break;
	case VT_BSTR:
		strRet=V_BSTRT(&var);
		break;
	case VT_DISPATCH:
		strRet=_T("VT_DISPATCH");
		break;
	case VT_ERROR:
		strRet=_T("VT_ERROR");
		break;
	case VT_BOOL:
		return Str2Bool(V_BOOL(&var));
	case VT_VARIANT:
		strRet=_T("VT_VARIANT");
		break;
	case VT_UNKNOWN:
		strRet=_T("VT_UNKNOWN");
		break;
	case VT_I1:
		strRet=_T("VT_I1");
		break;
	case VT_UI1:
		strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
		break;
	case VT_UI2:
		strRet=_T("VT_UI2");
		break;
	case VT_UI4:
		strRet=_T("VT_UI4");
		break;
	case VT_I8:
		strRet=_T("VT_I8");
		break;
	case VT_UI8:
		strRet=_T("VT_UI8");
		break;
	case VT_INT:
		strRet=_T("VT_INT");
		break;
	case VT_UINT:
		strRet=_T("VT_UINT");
		break;
	case VT_VOID:
		strRet=_T("VT_VOID");
		break;
	case VT_HRESULT:
		strRet=_T("VT_HRESULT");
		break;
	case VT_PTR:
		strRet=_T("VT_PTR");
		break;
	case VT_SAFEARRAY:
		strRet=_T("VT_SAFEARRAY");
		break;
	case VT_CARRAY:
		strRet=_T("VT_CARRAY");
		break;
	case VT_USERDEFINED:
		strRet=_T("VT_USERDEFINED");
		break;
	case VT_LPSTR:
		strRet=_T("VT_LPSTR");
		break;
	case VT_LPWSTR:
		strRet=_T("VT_LPWSTR");
		break;
	case VT_FILETIME:
		strRet=_T("VT_FILETIME");
		break;
	case VT_BLOB:
		strRet=_T("VT_BLOB");
		break;
	case VT_STREAM:
		strRet=_T("VT_STREAM");
		break;
	case VT_STORAGE:
		strRet=_T("VT_STORAGE");
		break;
	case VT_STREAMED_OBJECT:
		strRet=_T("VT_STREAMED_OBJECT");
		break;
	case VT_STORED_OBJECT:
		strRet=_T("VT_STORED_OBJECT");
		break;
	case VT_BLOB_OBJECT:
		strRet=_T("VT_BLOB_OBJECT");
		break;
	case VT_CF:
		strRet=_T("VT_CF");
		break;
	case VT_CLSID:
		strRet=_T("VT_CLSID");
		break;
	}
	WORD vt=var.vt;
	if(vt&VT_ARRAY)
	{
		vt=vt&~VT_ARRAY;
		strRet=_T("Array of ");
	}
	if(vt&VT_BYREF)
	{
		vt=vt&~VT_BYREF;
		strRet+=_T("Pointer to ");
	}
	if(vt!=var.vt)
	{
		switch(vt)
		{
		case VT_EMPTY:
			strRet+=_T("VT_EMPTY");
			break;
		case VT_NULL:
			strRet+=_T("NULL");
			break;
		case VT_I2:
			strRet+=_T("V_I2");
			break;
		case VT_I4:
			strRet+=_T("V_I4");
			break;
		case VT_R4:
			strRet+=_T("V_R4");
			break;
		case VT_R8:
			strRet+=_T("V_R8");
			break;
		case VT_CY:
			strRet+=_T("VT_CY");
			break;
		case VT_DATE:
			strRet+=_T("VT_DATE");
			break;
		case VT_BSTR:
			strRet+=_T("V_BSTRT");
			break;
		case VT_DISPATCH:
			strRet+=_T("VT_DISPATCH");
			break;
		case VT_ERROR:
			strRet+=_T("VT_ERROR");
			break;
		case VT_BOOL:
			strRet+=_T("VT_BOOL");
			break;
		case VT_VARIANT:
			strRet+=_T("VT_VARIANT");
			break;
		case VT_UNKNOWN:
			strRet+=_T("VT_UNKNOWN");
			break;
		case VT_I1:
			strRet+=_T("VT_I1");
			break;
		case VT_UI1:
			strRet+=_T("V_UI1");
			break;
		case VT_UI2:
			strRet+=_T("VT_UI2");
			break;
		case VT_UI4:
			strRet+=_T("VT_UI4");
			break;
		case VT_I8:
			strRet+=_T("VT_I8");
			break;
		case VT_UI8:
			strRet+=_T("VT_UI8");
			break;
		case VT_INT:
			strRet+=_T("VT_INT");
			break;
		case VT_UINT:
			strRet+=_T("VT_UINT");
			break;
		case VT_VOID:
			strRet+=_T("VT_VOID");
			break;
		case VT_HRESULT:
			strRet+=_T("VT_HRESULT");
			break;
		case VT_PTR:
			strRet+=_T("VT_PTR");
			break;
		case VT_SAFEARRAY:
			strRet+=_T("VT_SAFEARRAY");
			break;
		case VT_CARRAY:
			strRet+=_T("VT_CARRAY");
			break;
		case VT_USERDEFINED:
			strRet+=_T("VT_USERDEFINED");
			break;
		case VT_LPSTR:
			strRet+=_T("VT_LPSTR");
			break;
		case VT_LPWSTR:
			strRet+=_T("VT_LPWSTR");
			break;
		case VT_FILETIME:
			strRet+=_T("VT_FILETIME");
			break;
		case VT_BLOB:
			strRet+=_T("VT_BLOB");
			break;
		case VT_STREAM:
			strRet+=_T("VT_STREAM");
			break;
		case VT_STORAGE:
			strRet+=_T("VT_STORAGE");
			break;
		case VT_STREAMED_OBJECT:
			strRet+=_T("VT_STREAMED_OBJECT");
			break;
		case VT_STORED_OBJECT:
			strRet+=_T("VT_STORED_OBJECT");
			break;
		case VT_BLOB_OBJECT:
			strRet+=_T("VT_BLOB_OBJECT");
			break;
		case VT_CF:
			strRet+=_T("VT_CF");
			break;
		case VT_CLSID:
			strRet+=_T("VT_CLSID");
			break;
		}
	}

	return strRet;
}

int CAccessDB::GetValueInField(char * TbName,char * lpszName,char *OutValue)
{
	int iFieldCount = GetFieldCount(TbName);
	CDaoTableDef m_MyTable(&m_DB);
	m_MyTable.Open(TbName);

	for(int i=0;i<iFieldCount;i++)
	{
		CDaoFieldInfo FieldInfo;
		m_MyTable.GetFieldInfo(i,FieldInfo,AFX_DAO_ALL_INFO);
		if((strcmp((const char *)(LPCTSTR)
			FieldInfo.m_strName,lpszName))!=0)
			continue;
		else
		{
			m_MyTable.Close();
			strcpy(OutValue,(char *)(LPCTSTR)FieldInfo.m_strName);
			return 0;
		}
	}

	m_MyTable.Close();
	return -1;

}

int CAccessDB::GetValueInField(char * TbName,int nIndex,char *OutValue)
{
	CDaoTableDef m_MyTable(&m_DB);
	m_MyTable.Open(TbName);

	CDaoFieldInfo FieldInfo;
	m_MyTable.GetFieldInfo(nIndex,FieldInfo,AFX_DAO_ALL_INFO);
	m_MyTable.Close();

	strcpy(OutValue,(char *)(LPCTSTR)FieldInfo.m_strName);
	return 0;

}

BOOL CAccessDB::FreshDBInfo()
{
	if(!m_DB.IsOpen())
		return FALSE;

	CDaoRecordset tmpDataSet(&m_DB);
	memcpy(&m_DataSet,&tmpDataSet,sizeof(tmpDataSet));

	int nTableCount=m_DB.GetTableDefCount();
	for(int i=0;i<nTableCount;i++)
	{
		CDaoTableDefInfo TableInfo;
		m_DB.GetTableDefInfo(i,TableInfo,AFX_DAO_ALL_INFO);
		if(TableInfo.m_lAttributes!=0)
			continue;
		else
		{
			m_TableCount+=1;
			sprintf(m_TableName[m_TableCount-1],
					"%s",
					(const char*)(LPCTSTR)TableInfo.m_strName);
			CDaoTableDef m_MyTable(&m_DB);
			m_MyTable.Open(TableInfo.m_strName);

			int nFieldCount=m_MyTable.GetFieldCount();
			for(int j=0;j<nFieldCount;j++)
			{
				CDaoFieldInfo FieldInfo;
				m_MyTable.GetFieldInfo(j,FieldInfo,AFX_DAO_ALL_INFO);
				sprintf(m_FieldName[m_TableCount-1][j],"%s",FieldInfo.m_strName);
				m_FieldType[m_TableCount-1][j]=FieldInfo.m_nType;
			}
			m_MyTable.Close();
		}
	}

	
	return TRUE;
}

BOOL CAccessDB::FreshTBInfo(char *TbName)
{
//	CDaoTableDef m_MyTable(&m_DB);
//	m_MyTable.Open(TbName);
	return TRUE;
//	m_
}

int CAccessDB::GetDataSetFieldCount()
{
	long retcode;

	if(!m_DataSet.IsOpen())
		return -1;

	try
	{
		m_DataSet.MoveFirst();
	}
	catch(CDaoException *e)
	{
		CString msg;
		msg.Format("%s",e->m_pErrorInfo->m_strDescription);
		retcode=e->m_pErrorInfo->m_lErrorCode;
		e->Delete();
		if(retcode==3021)
			return 0;
		else
		{
			AfxMessageBox(msg);
			return -1;
		}
	}

	return m_DataSet.GetFieldCount();
}

int CAccessDB::SetDataSet(char *DSName,char *szSql, int szOpenMode)
{
	if(!m_DB.IsOpen())
	{
		m_DB.Open(m_DBName);
	}

//	if(m_DataSet.IsOpen())
//		m_DataSet.Close();


	memset(m_DataSetSql,0,sizeof(m_DataSetSql));
	memset(m_DSName,0,sizeof(m_DSName));

	if(m_DataSet.IsOpen())
	{
		if(DSName!=NULL)
			sprintf(m_DSName,"%s",DSName);
		m_DataSet.Close();
		m_DataSet.Open(szOpenMode,szSql);
	}
	else
	{
		try
		{
			m_DataSet.Open(szOpenMode,szSql);
			if(DSName!=NULL)
				sprintf(m_DSName,"%s",DSName);
		}
		catch(CDaoException *e)
		{
			CString msg;
			msg.Format("%s\n%s",
					szSql,
					e->m_pErrorInfo->m_strDescription);

			AfxMessageBox(msg);
			e->Delete();

			return 0;
		}
	}

	return 1;
}

int CAccessDB::GetDataSetFieldName(int nIndex, char *OutValue)
{
	if(!m_DataSet.IsOpen())
		return -1;
/*
	if((strcmp(DataSetName,m_DSName))!=0)
	{
		OutValue=NULL;
		return -1;
	}
*/
	CDaoFieldInfo FieldInfo;
//	m_DataSet.MoveFirst();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区在线| 亚洲地区一二三色| 欧美中文字幕一区二区三区亚洲| 日韩美女视频19| 欧美男人的天堂一二区| 日韩国产欧美在线观看| xvideos.蜜桃一区二区| 老司机精品视频线观看86| 亚洲精品一区二区三区精华液| 日韩电影网1区2区| 国产精品色哟哟网站| 91麻豆免费视频| 欧美aaaaaa午夜精品| 亚洲猫色日本管| 欧美精品一区二区三区久久久| 波多野结衣亚洲| 美女视频黄免费的久久| 亚洲网友自拍偷拍| 欧美大尺度电影在线| 成人激情小说乱人伦| 日本免费在线视频不卡一不卡二| 久久看人人爽人人| 日韩一二三区不卡| 欧美少妇bbb| 色av一区二区| 91丨porny丨首页| 成人美女视频在线观看| 蓝色福利精品导航| 日韩综合一区二区| 午夜精品一区二区三区免费视频 | 色综合色综合色综合色综合色综合| 另类小说视频一区二区| 国产偷国产偷亚洲高清人白洁| 国产精品一品二品| 大尺度一区二区| 国产suv精品一区二区三区| 久久99久久久久久久久久久| 另类小说欧美激情| 国产精品一区在线观看乱码 | 91亚洲精品久久久蜜桃| 成人午夜电影网站| 91在线视频网址| 欧美日韩一级二级三级| 精品久久久久久亚洲综合网 | 久久97超碰国产精品超碰| 国产尤物一区二区在线| 久久福利资源站| 99精品视频一区二区| 欧美精选一区二区| 国产精品毛片高清在线完整版| 亚洲一区二区影院| 久久99久国产精品黄毛片色诱| 激情亚洲综合在线| 在线视频观看一区| 久久久亚洲欧洲日产国码αv| 国产精品国产三级国产普通话蜜臀| 一区二区三区日韩欧美精品| 激情国产一区二区| 精品视频1区2区| 亚洲少妇30p| 国产美女精品一区二区三区| 欧美日韩高清在线播放| 精品国产髙清在线看国产毛片| 综合中文字幕亚洲| 国产成人午夜99999| 91精品国产全国免费观看 | thepron国产精品| 欧美亚洲高清一区| 亚洲欧美怡红院| 高清在线观看日韩| 久久婷婷国产综合精品青草 | 欧美亚日韩国产aⅴ精品中极品| 久久影院视频免费| 午夜视频在线观看一区| 欧美在线一区二区| 亚洲男人的天堂在线观看| 粉嫩aⅴ一区二区三区四区| 日本一区二区三区四区| 不卡av免费在线观看| 国产精品久久综合| 色婷婷综合久久| 丝袜美腿亚洲色图| 欧美日韩一级黄| 狠狠色狠狠色综合| 国产精品久久久久久久久免费丝袜| 国产成人99久久亚洲综合精品| 国产欧美日本一区二区三区| 国产成人免费网站| 亚洲欧洲美洲综合色网| 欧美久久久久中文字幕| 麻豆视频观看网址久久| 国产精品三级电影| 678五月天丁香亚洲综合网| 国产成人综合自拍| 五月婷婷久久综合| 亚洲欧美欧美一区二区三区| 337p亚洲精品色噜噜狠狠| 国产伦精一区二区三区| 亚洲一区av在线| 国产精品国产三级国产a| 欧美日韩国产美| 国产在线播精品第三| 日韩综合小视频| 亚洲色图色小说| 久久综合色之久久综合| 欧美影视一区在线| 91日韩一区二区三区| 黄色资源网久久资源365| 亚洲品质自拍视频| 国产无一区二区| 欧美精品一区二| www久久精品| 日韩亚洲欧美一区二区三区| 91视频你懂的| 91影院在线观看| 91在线看国产| eeuss鲁一区二区三区| 九九精品视频在线看| 蜜臀99久久精品久久久久久软件| 亚洲女性喷水在线观看一区| 国产精品白丝在线| 亚洲欧美另类久久久精品| 日韩理论片网站| 亚洲丝袜精品丝袜在线| 亚洲精品免费在线播放| 亚洲chinese男男1069| 美女网站在线免费欧美精品| 精品亚洲国产成人av制服丝袜 | 中文av字幕一区| 一区二区免费在线播放| 日韩中文字幕区一区有砖一区| 免费高清在线一区| 99久久久国产精品| 日韩一区二区三区四区| 2024国产精品| 欧美激情在线一区二区| 天堂一区二区在线免费观看| a级高清视频欧美日韩| 久久久久国产免费免费| 美女精品一区二区| 欧美亚日韩国产aⅴ精品中极品| 久久久影院官网| 国产一区二区久久| 日韩免费高清视频| 日韩成人伦理电影在线观看| 在线视频亚洲一区| 亚洲一区二区黄色| 欧美丝袜丝交足nylons| 亚洲午夜久久久| 欧美日韩成人一区| 久久99久久精品| 国产日本亚洲高清| heyzo一本久久综合| 久久精品一区二区三区四区| 精品一区二区三区视频在线观看 | 欧美日韩一区二区三区免费看| 亚洲国产精品影院| 91精品在线一区二区| 久草中文综合在线| 久久久久国产成人精品亚洲午夜 | 视频一区二区三区入口| 日韩午夜激情免费电影| 丁香激情综合国产| 亚洲.国产.中文慕字在线| 欧美一级日韩免费不卡| 国产精品1区二区.| 亚洲久本草在线中文字幕| 在线综合视频播放| 国产91富婆露脸刺激对白| 亚洲国产日韩在线一区模特| 日韩一二在线观看| 97se亚洲国产综合在线| 国产一区久久久| 日韩不卡一区二区| 亚洲色欲色欲www在线观看| 日韩一区二区三免费高清| 色婷婷精品久久二区二区蜜臀av| 日韩不卡在线观看日韩不卡视频| 久久久www免费人成精品| 精品少妇一区二区三区免费观看 | 国产视频一区在线播放| 欧美肥妇free| 久久久久久黄色| 中文字幕亚洲欧美在线不卡| 一区二区不卡在线播放 | 亚洲图片欧美色图| 亚洲乱码国产乱码精品精可以看| 亚洲精品一区二区三区四区高清| 91精品国产综合久久精品性色 | 26uuu国产一区二区三区| 精品美女一区二区三区| 精品国产欧美一区二区| 日本丶国产丶欧美色综合| 成人综合婷婷国产精品久久蜜臀| 国产精品一区不卡| 99久久亚洲一区二区三区青草| 色一情一乱一乱一91av| 欧美日本一区二区三区四区| 日韩精品中文字幕在线不卡尤物| 日韩欧美一级在线播放|