?? telprvdrs.h
字號:
// TelPrvdRS.h : Declaration of the CTelPrvdRowset
#ifndef __CTelPrvdRowset_H_
#define __CTelPrvdRowset_H_
#include "resource.h" // main symbols
class CTelPrvdRowset;
class CTelPrvdCommand;
class CTelPrvdWindowsFile
{
public:
TCHAR szName[256];//姓名
TCHAR szEMail[256];//e-mial
TCHAR szTele[256];//聯系電話
TCHAR szCompany[256];//工作單位
TCHAR szVocation[256];//職位
TCHAR szAs_it_is[1024];//寫真
static ATLCOLUMNINFO* GetColumnInfo(CTelPrvdRowset* pThis, ULONG* pcCols);
static ATLCOLUMNINFO* GetColumnInfo(CTelPrvdCommand* pThis, ULONG* pcCols);
};
// CTelPrvdCommand
class ATL_NO_VTABLE CTelPrvdCommand :
public CComObjectRootEx<CComSingleThreadModel>,
public IAccessorImpl<CTelPrvdCommand>,
public ICommandTextImpl<CTelPrvdCommand>,
public ICommandPropertiesImpl<CTelPrvdCommand>,
public IObjectWithSiteImpl<CTelPrvdCommand>,
public IConvertTypeImpl<CTelPrvdCommand>,
public IColumnsInfoImpl<CTelPrvdCommand>
{
public:
BEGIN_COM_MAP(CTelPrvdCommand)
COM_INTERFACE_ENTRY(ICommand)
COM_INTERFACE_ENTRY(IObjectWithSite)
COM_INTERFACE_ENTRY(IAccessor)
COM_INTERFACE_ENTRY(ICommandProperties)
COM_INTERFACE_ENTRY2(ICommandText, ICommand)
COM_INTERFACE_ENTRY(IColumnsInfo)
COM_INTERFACE_ENTRY(IConvertType)
END_COM_MAP()
// ICommand
public:
HRESULT FinalConstruct()
{
HRESULT hr = CConvertHelper::FinalConstruct();
if (FAILED (hr))
return hr;
hr = IAccessorImpl<CTelPrvdCommand>::FinalConstruct();
if (FAILED(hr))
return hr;
return CUtlProps<CTelPrvdCommand>::FInit();
}
void FinalRelease()
{
IAccessorImpl<CTelPrvdCommand>::FinalRelease();
}
HRESULT WINAPI Execute(IUnknown * pUnkOuter, REFIID riid, DBPARAMS * pParams,
LONG * pcRowsAffected, IUnknown ** ppRowset);
static ATLCOLUMNINFO* GetColumnInfo(CTelPrvdCommand* pv, ULONG* pcInfo)
{
return CTelPrvdWindowsFile::GetColumnInfo(pv,pcInfo);
}
BEGIN_PROPSET_MAP(CTelPrvdCommand)
BEGIN_PROPERTY_SET(DBPROPSET_ROWSET)
PROPERTY_INFO_ENTRY_EX( IAccessor,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IColumnsInfo,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IConvertType,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IRowset,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IRowsetIdentity,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IRowsetInfo,
VT_BOOL, DBPROPFLAGS_ROWSET |
DBPROPFLAGS_READ, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( IRowsetLocate,
VT_BOOL,
DBPROPFLAGS_ROWSET|DBPROPFLAGS_READ|
DBPROPFLAGS_WRITE, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( BOOKMARKS,
VT_BOOL, DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ |DBPROPFLAGS_WRITE,
VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( BOOKMARKSKIPPED,VT_BOOL,
DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ,0,0)
PROPERTY_INFO_ENTRY_EX( BOOKMARKTYPE, VT_I4,
DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ,0,0)
PROPERTY_INFO_ENTRY_EX( CANFETCHBACKWARDS,
VT_BOOL, DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ|
DBPROPFLAGS_WRITE, 0, 0)
PROPERTY_INFO_ENTRY_EX( CANHOLDROWS,
VT_BOOL, DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ|DBPROPFLAGS_WRITE,
VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( CANSCROLLBACKWARDS,
VT_BOOL, DBPROPFLAGS_DATASOURCEINFO|
DBPROPFLAGS_READ,VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( LITERALBOOKMARKS,VT_BOOL,
DBPROPFLAGS_ROWSET|DBPROPFLAGS_READ|
DBPROPFLAGS_WRITE, VARIANT_TRUE, 0)
PROPERTY_INFO_ENTRY_EX( ORDEREDBOOKMARKS,VT_BOOL,
DBPROPFLAGS_ROWSET|DBPROPFLAGS_READ|
DBPROPFLAGS_WRITE, VARIANT_TRUE, 0)
END_PROPERTY_SET(DBPROPSET_ROWSET)
END_PROPSET_MAP()
};
class CTelPrvdRowset : public CRowsetImpl< CTelPrvdRowset, CTelPrvdWindowsFile, CTelPrvdCommand>
{
public:
HRESULT Execute(DBPARAMS * pParams, LONG* pcRowsAffected)
{
USES_CONVERSION;
FILE* pFile;
TCHAR szString[256];
TCHAR szFile[MAX_PATH];
size_t nLength;
ObjectLock lock(this);
//m_strCommandText記錄從服務器傳過來的文件名,
if (m_strCommandText == (BSTR)NULL)
{
ATLTRACE("文件名不能為空!");
return E_FAIL;
}
//打開文件
_tcscpy(szFile, OLE2T(m_strCommandText));
if (szFile[0] == _T('\0') || ((pFile = fopen(&szFile[0], "r")) == NULL))
{
ATLTRACE("文件打不開!");
return DB_E_NOTABLE;
}
//遍歷文件,每行應包括由"#"分開的六個字段
LONG cFiles = 0;
while (fgets(szString, 256, pFile) != NULL)
{
nLength = strlen(szString);
//去掉行回車符!
szString[nLength-1] = '\0';
int i = 0;
CTelPrvdWindowsFile wf;
char seps[] = "#";//字段分界標志
char *token;
token = strtok( szString, seps );
while( token != NULL && i<=5 )
{
//按位置把字段加入對應變量
switch( i )
{
case 0:
_tcscpy(wf.szName, token);
break;
case 1:
_tcscpy(wf.szEMail, token);
break;
case 2:
_tcscpy(wf.szTele, token);
break;
case 3:
_tcscpy(wf.szCompany, token);
break;
case 4:
_tcscpy(wf.szVocation, token);
break;
case 5:
_tcscpy(wf.szAs_it_is, token);
break;
default:
break;
}
i++;
token = strtok( NULL, seps );
}
//把記錄加入數組中
if (!m_rgRowData.Add(wf))
{
ATLTRACE("把記錄加入數組時系統出錯!");
fclose(pFile);
return E_FAIL;
}
}
if (pcRowsAffected != NULL)
*pcRowsAffected = cFiles;
return S_OK;
}
};
#endif //__CTelPrvdRowset_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -