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

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

?? myodbcdbgridfile.cpp

?? 以BREW為開發平臺,以C為開發語言的BREW中demo實現的程序,是自己做的作業比較簡單
?? CPP
字號:
// MyODBCDBGridFile.cpp: implementation of the CMyODBCDBGridFile class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyODBCDBGridFile.h"
//#include "waitdlg.h"

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

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


//extern CWaitDlg waitDlg;
CMyODBCDBGridFile::CMyODBCDBGridFile(CGridCtrl *pGrid, CMyODBC *pODBCDB, CString strSql,  CString strFilePath)
{
	if(pGrid == NULL)
	{
		AfxMessageBox("必須傳遞一個CGridCtrl對象的指針用于顯示查詢的數據");
		return;
	}
	this->m_pODBCDB = pODBCDB;

	m_strFilePath = strFilePath;
	m_pGrid = pGrid;
	m_hFile = NULL;
	m_hFilemap = NULL;
	m_pvFile = NULL;
	m_cpWrite = NULL;
	m_iCurrentCount = 1;

	//for select query
	m_strSql = strSql;

	m_iTotalCount = 0;

	m_pRowFileInfo = NULL;

	m_iMapFileSize = 10 * 1024 * 1024;
	m_iOnceFetchRows = 500;
	m_bConnectMode = 0;//已經聯接數據庫

}

CMyODBCDBGridFile::CMyODBCDBGridFile(CGridCtrl *pGrid,CString strSql, CString strServer, CString strUser, CString strPass, CString strFilePath)
{
	if(pGrid == NULL)
	{
		AfxMessageBox("必須傳遞一個CGridCtrl對象的指針用于顯示查詢的數據");
		return;
	}

	m_strFilePath = strFilePath;
	m_pGrid = pGrid;
	m_hFile = NULL;
	m_hFilemap = NULL;
	m_pvFile = NULL;
	m_cpWrite = NULL;
	m_iCurrentCount = 1;

	//for select query
	m_strSql = strSql;
	m_strUser = strUser;
	m_strPass = strPass;
	m_strServer = strServer;
	m_iTotalCount = 0;

	m_pRowFileInfo = NULL;

	m_iMapFileSize = 8 * 1024 * 1024;
	m_iOnceFetchRows = 500;
	m_bConnectMode = 1;//自己聯接數據庫


}

CMyODBCDBGridFile::~CMyODBCDBGridFile()
{

}

int CMyODBCDBGridFile::InitGrid()
{
	if(m_pGrid == NULL)
	{
		AfxMessageBox("發生錯誤,指向dbgrid控件的指針為空");
		return -1;
	}

	//connect to oracle
	if(m_bConnectMode)
	{
		m_pODBCDB = new CMyODBC;
		if(m_pODBCDB->ConnectDB((LPCSTR)m_strServer, (LPCSTR)m_strUser, (LPCSTR)m_strPass))
		{
			return -1;
		}
	}

	m_iTotalCount = GetSelectTotalCount();

	m_pGrid->SetVirtualMode(TRUE);
	m_pGrid->SetRowCount(m_iTotalCount + 1);
	m_pGrid->SetFixedRowCount(1);

	if(m_pODBCDB->PrepareSql(m_strSql, m_Set) == FALSE)
	{
		return -1;
	}
	m_pGrid->SetColumnCount(m_Set.GetCols() + 1);
	m_pGrid->SetFixedColumnCount(1);

	this->InitMapFile();
	
	return 0;

}

int CMyODBCDBGridFile::InitMapFile()
{
	int i = 0;
	m_pRowFileInfo = new SRowInfo[m_iTotalCount];
	if(m_pRowFileInfo == NULL)
	{
		AfxMessageBox("分配用于存儲每行記錄的信息的結構失敗");
		
		return -1;
	}

	for(i = 0; i < m_iTotalCount; i++)
	{
		m_pRowFileInfo[i].bWritten = FALSE;
		m_pRowFileInfo[i].pAddress = NULL;
	}
	
	m_hFile = ::CreateFile((LPCTSTR)m_strFilePath, GENERIC_READ | GENERIC_WRITE ,
		0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	if(m_hFile == INVALID_HANDLE_VALUE)
	{
		AfxMessageBox("創建文件失敗");
		return -1;
	}

	m_hFilemap = ::CreateFileMapping(m_hFile, NULL, PAGE_READWRITE, 0, m_iMapFileSize, NULL);
	if(m_hFilemap == NULL)
	{
		AfxMessageBox("創建文件映射失敗");
		::CloseHandle(m_hFile);
		return -1;
	}
	::CloseHandle(m_hFile);


	m_pvFile = ::MapViewOfFile(m_hFilemap,FILE_MAP_WRITE,0,0,0);
	if(m_pvFile == NULL)
	{
		AfxMessageBox("映射文件失敗");
		::CloseHandle(m_hFilemap);
		::CloseHandle(m_hFile);
		return -1;
	}
	::CloseHandle(m_hFilemap);


	m_cpWrite = (char *)m_pvFile;
	return 0;	

}

int CMyODBCDBGridFile::FetchData()
{
	int j;
	CString strField = "", strTemp = "";
	char cpTemp[2048];
	int iColumnes = m_Set.GetCols();
	int iInitCount = m_iCurrentCount;
	while((m_iCurrentCount - iInitCount) < m_iOnceFetchRows )
	{
		if(  m_pODBCDB->FetchData() == TRUE)
		{
			strTemp = "";
			for(j = 0; j < iColumnes; j++)
			{
				if(strlen(m_Set[0][j].value) == 0)
				{
					strTemp = strTemp + "null,";
				}
				else
				{
					strTemp = strTemp + m_Set[0][j].value + ",";
				}
			}
			sprintf(cpTemp, "%d=%s\r\n", m_iCurrentCount, (LPCTSTR)strTemp);
			m_pRowFileInfo[m_iCurrentCount - 1].bWritten = TRUE;
			m_pRowFileInfo[m_iCurrentCount - 1].pAddress = m_cpWrite;
				
			if(((int)(m_cpWrite - (char *)m_pvFile)) >= m_iMapFileSize - 500)
			{
			//	waitDlg.ShowWait("由于數據量很大,正在重新分配內存,請稍等....");
				return -1;
			}
			strcpy(m_cpWrite, cpTemp);
			m_cpWrite += strlen(cpTemp);
			
			m_iCurrentCount++;
		}
		else
		{
			break;
		}
	}
	*m_cpWrite = '\0';

	return 0;

}

//獲得查詢得到的結果集的總行數
int CMyODBCDBGridFile::GetSelectTotalCount()
{
	int iResult = 0;
	CString strSql = "select count(*) from ( "+ m_strSql + ") chensl";

	m_pODBCDB->PrepareSql((LPCTSTR)strSql, m_Set);
	m_pODBCDB->FetchData();
	iResult = atoi(m_Set[0][0].value);
	m_Set.Empty();

	return iResult;
}

int CMyODBCDBGridFile::SetGridText(GV_DISPINFO *pDispInfo)
{
	CString strTemp = "";
	if(pDispInfo->item.row == 0)//顯示第一行的列名
	{
		if(pDispInfo->item.col > 0)
		{
			pDispInfo->item.strText.Format("%s", m_Set.GetColInfo(pDispInfo->item.col - 1).name);
		}
		
	}
	else if(pDispInfo->item.col == 0)//顯示行號
	{
		pDispInfo->item.strText.Format(_T("%d"),pDispInfo->item.row);
	}
	else 
	{
		CString strText;
		if(GetAGridData(pDispInfo->item.row, pDispInfo->item.col, strText) == 0)
		{
			pDispInfo->item.strText = strText;
		}
		else
		{
			pDispInfo->item.strText = "";
			return -1;
			
		}
	}

	return 0;

}

int CMyODBCDBGridFile::GetAGridData(int iRow, int iCol, CString &strOut)
{
	CString strTemp, strField;
	int iCount = 1, i = 0;
	char cpToken[] = ",";
	char *cpTemp1 = NULL, *cpTemp2 = NULL;
	char cpRow[1024];


	strTemp.Format("%d=", iRow);

	while(!m_pRowFileInfo[iRow - 1].bWritten)
	{
	//	waitDlg.ShowWait("正在獲取數據,請稍等....");
	
		if(FetchData() != 0)
		{
			DealMapFileSizeLess();
			return -1;
		}
	}
//	waitDlg.ShowWindow(SW_HIDE);
	cpTemp2 = strstr(m_pRowFileInfo[iRow - 1].pAddress, "\r\n");
	if(cpTemp2)
	{
		cpTemp1 = m_pRowFileInfo[iRow - 1].pAddress + strTemp.GetLength();
		strncpy(cpRow, cpTemp1, (int)(cpTemp2 - cpTemp1));
		strcpy(cpRow + (int)(cpTemp2 - cpTemp1), "\0");
	
		char *cpResult = strtok(cpRow, cpToken);
		while(cpResult != NULL)
		{
			if(iCount == iCol)
			{
				strOut.Format("%s", cpResult);
				if(strOut == "null")
				{
					strOut = "";
				}
				break;
			}
			cpResult = strtok( NULL, cpToken );
			iCount++;
		}

	}

	return 0;
}


int CMyODBCDBGridFile::Release()
{
	if(m_cpWrite != NULL)
	{
		m_cpWrite = NULL;
	}
	if(m_pRowFileInfo != NULL)
	{
		delete []m_pRowFileInfo; m_pRowFileInfo = NULL;
	}
	m_Set.Empty();
	if(m_bConnectMode == 1)
	{
		m_pODBCDB->DisConnect();
		delete m_pODBCDB; m_pODBCDB = NULL;
	}

	if(m_pvFile)
	{
		::UnmapViewOfFile(m_pvFile);
	}

	m_iCurrentCount = 1;
	return 0;

}

//

BOOL CMyODBCDBGridFile::SetMapFileSize(int iMapFileSize)
{
	m_iMapFileSize = iMapFileSize;
	return TRUE;

}

int CMyODBCDBGridFile::GetMapFileSize()
{
	return m_iMapFileSize;

}

int CMyODBCDBGridFile::DealMapFileSizeLess()
{
	m_iMapFileSize += 15 * 1024 * 1024;
	m_pGrid->DeleteAllItems();
	this->Release();
	this->InitGrid();
//	waitDlg.ShowWindow(SW_HIDE);
	return 0;

}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级免费观看| 777亚洲妇女| 色吊一区二区三区| 91亚洲精品久久久蜜桃| 国产91丝袜在线18| 在线一区二区三区四区| 欧美喷潮久久久xxxxx| 日韩一级免费观看| 国产日韩视频一区二区三区| 国产精品少妇自拍| 一区二区免费看| 久久99精品国产麻豆婷婷洗澡| 国产在线视视频有精品| 99热这里都是精品| 欧美久久高跟鞋激| 欧美国产一区二区| 亚洲444eee在线观看| 国产精品综合二区| 色94色欧美sute亚洲线路一久 | 欧美成人bangbros| 亚洲欧美影音先锋| 国产综合成人久久大片91| 精品福利av导航| 亚洲第一av色| 成人黄色电影在线| 久久综合色8888| 香蕉成人啪国产精品视频综合网| 国产老妇另类xxxxx| 欧美一区二区三区喷汁尤物| 亚洲一区二区3| 91亚洲国产成人精品一区二区三 | 亚洲一区二区影院| 粉嫩aⅴ一区二区三区四区| 亚洲精品一区二区在线观看| 亚洲电影视频在线| 欧美性猛交xxxx乱大交退制版 | 7777精品伊人久久久大香线蕉最新版| 中文字幕免费一区| 成人动漫精品一区二区| 国产无遮挡一区二区三区毛片日本| 日本在线不卡视频一二三区| 在线观看中文字幕不卡| 亚洲一区二区免费视频| 欧美亚洲国产一卡| 亚洲不卡在线观看| 日韩欧美一二三区| 精品一区二区三区不卡| 久久亚洲综合色一区二区三区| 国产精品综合一区二区| 国产女同性恋一区二区| 91在线视频免费观看| 亚洲一区二区三区激情| 精品国产sm最大网站| 成人激情小说乱人伦| 三级久久三级久久久| www日韩大片| 在线国产电影不卡| 国产91在线看| 美女尤物国产一区| 国产偷国产偷精品高清尤物| 欧美视频一区二区三区在线观看| 麻豆成人av在线| 亚洲女子a中天字幕| 中文字幕免费不卡| 日韩亚洲电影在线| 欧美日韩视频在线一区二区| 国产成人啪午夜精品网站男同| 亚洲欧美日韩国产综合| 2020日本不卡一区二区视频| 欧美三日本三级三级在线播放| 国产精品一区二区无线| 久久精品国产久精国产爱| 亚洲美女免费在线| 国产精品第五页| 欧美韩国日本一区| 久久久www免费人成精品| 日韩欧美卡一卡二| 日韩一二三四区| 欧美本精品男人aⅴ天堂| 91精品在线免费观看| 欧美片网站yy| 制服.丝袜.亚洲.另类.中文| 成人永久aaa| 国产99久久精品| 国产高清精品在线| 国产福利一区二区| 国产成人自拍网| 福利一区二区在线| 国产一区二区三区蝌蚪| 裸体一区二区三区| 国产一区二区视频在线播放| 久久精品99国产精品| 精品一区二区三区在线播放 | 国产v综合v亚洲欧| 国产999精品久久久久久绿帽| 成人综合激情网| 色婷婷激情久久| 日韩一区二区在线免费观看| 欧美精品tushy高清| 欧美xxxx老人做受| 日韩精品一区二区三区四区视频| 在线观看亚洲专区| xf在线a精品一区二区视频网站| 国产欧美日韩三区| 五月婷婷综合网| av在线不卡网| 91精品一区二区三区在线观看| 日本一区二区免费在线| 中文字幕一区二区三区在线不卡| 五月婷婷激情综合网| 成人美女视频在线观看18| 欧美一级在线视频| 亚洲一区二区三区四区中文字幕| 精品在线一区二区三区| 欧美性猛片aaaaaaa做受| 亚洲国产激情av| 国产一区二区三区视频在线播放| 欧美性色黄大片| 亚洲人午夜精品天堂一二香蕉| 麻豆成人免费电影| 7777精品伊人久久久大香线蕉最新版| 一区在线观看视频| 成人高清视频在线观看| 国产网站一区二区| 国产91色综合久久免费分享| 久久久久久久综合色一本| 免费成人你懂的| 国产夜色精品一区二区av| 国产精品伊人色| 国产欧美一区二区三区在线看蜜臀| 精彩视频一区二区| 欧美成人激情免费网| 玖玖九九国产精品| 国产色综合一区| 91免费在线看| 偷拍一区二区三区| 精品成人a区在线观看| 丝袜a∨在线一区二区三区不卡| 一本一道久久a久久精品 | 99精品视频在线观看免费| 中文字幕在线一区免费| 欧美在线免费视屏| 精品无码三级在线观看视频| 欧美国产日韩一二三区| 欧美性一二三区| 国产精选一区二区三区| 亚洲成人午夜电影| 国产亚洲精品资源在线26u| 色综合激情久久| 精品中文字幕一区二区小辣椒| 亚洲国产高清不卡| 欧美高清性hdvideosex| 成人午夜在线免费| 日产国产欧美视频一区精品| 国产精品乱码一区二三区小蝌蚪| 欧美视频一区二| 北条麻妃一区二区三区| 国内精品久久久久影院一蜜桃| 亚洲日本乱码在线观看| 久久久久久久久97黄色工厂| 欧美美女网站色| 欧美视频在线一区| 色综合天天视频在线观看| 国产一区免费电影| 蜜桃一区二区三区在线观看| 亚洲激情综合网| 亚洲理论在线观看| 1024成人网| 一区二区三区国产精华| 亚洲免费在线看| 亚洲欧洲www| 五月天婷婷综合| 午夜精品久久久久久久蜜桃app| 亚洲黄色尤物视频| 亚洲成a人在线观看| 亚洲一区在线观看视频| 亚洲18色成人| 亚洲欧美日韩一区二区三区在线观看| 欧美一区日韩一区| 欧美tickling网站挠脚心| 日韩一区二区免费电影| 久久欧美一区二区| 国产欧美精品一区aⅴ影院| 亚洲天堂成人在线观看| 一区二区三区欧美久久| 美国一区二区三区在线播放| 国产在线不卡视频| 99久久久无码国产精品| 欧美性感一区二区三区| 欧美va亚洲va香蕉在线 | 九一九一国产精品| jiyouzz国产精品久久| 在线精品视频免费观看| 欧美一级生活片| 亚洲国产精品av| 毛片一区二区三区| 在线日韩av片| 国产精品二区一区二区aⅴ污介绍| 亚洲免费在线看| 成人av网站在线观看|