SQL Server 2000 Windows CE版 - C++编程
适用于:Windows CE 3.0
http://www.microsoft.com/china/windows/embedded/community/tips/ce/sqlserverforce.asp
发布日期:2003年9月26日
相关连接供稿人:Embedded MVP,Abraham Kcholi
Microsoft SQL Server™ 2000 for Windows® CE是一个得心应手的小工具。然而,针对C++开发人员提供的帮助内容却较为混乱。当我们着手利用专门针对SQL Server CE提供的对象链接与嵌入数据库(OLEDB)进行开发活动时,通常会查看相关示例,并感觉得心应手;然而,当我们试图为普通用户创建一个示例时,则会遇到某些绑定问题。下面提供了一种可能有助于克服绑定问题的解决方案。
从Rowset(行集合)对象中获取数据
在行集合中获取有关列的信息 hr = m_pIRowset->QueryInterface(IID_IcolumnsInfo,(void **)&pIColInfo);
hr = pIColInfo->GetColumnInfo(&cCol,&pColInfo,&pStringBuffer);
使用上述信息创建绑定(DBBINDING),而DBBINDING则代表行集合列中的实际数据被转移至用户缓冲区的具体方式。
重要提示:在您使用DBCOLUMNINFO(一种对应于行集合中每一列的结构)对绑定进行初始化之前,请先检查返回参数(&cCol)中的列数。这主要是因为,上述列中可能包含书签列,而与书签列有关的信息则是DBCOLUMNINFO数组的第一个结构。为此,应从返回数组的第二个元素中开始获取信息。 for ( iCol = 0 ; iCol < cCol - 1 ; iCol++ )
{
pBinding[iCol].iOrdinal = pColInfo[iCol + 1].iOrdinal;
pBinding[iCol].dwPart = DBPART_VALUE | DBPART_LENGTH | DBPART_STATUS;
pBinding[iCol].eParamIO = 0;
pBinding[iCol].wType = pColInfo[iCol + 1].wType;
pBinding[iCol].pTypeInfo = pColInfo[iCol + 1].pTypeInfo;
pBinding[iCol].pObject = NULL;
pBinding[iCol].obValue = dwOffset + offsetof(ColData,bData);
pBinding[iCol].obLength = dwOffset + offsetof(ColData,dwLength);
pBinding[iCol].obStatus = dwOffset + offsetof(ColData,dwStatus);
pBinding[iCol].cbMaxLen = pColInfo[iCol + 1].ulColumnSize + sizeof(ULONG);
pBinding[iCol].dwFlags = pColInfo[iCol + 1].dwFlags;
pBinding[iCol].dwMemOwner = DBMEMOWNER_CLIENTOWNED;
pBinding[iCol].pBindExt =NULL;
dwOffset += pBinding[iCol].cbMaxLen + offsetof(ColData,bData);
将绑定传递给Rowset(行集合)对象,并拾取存取程序句柄。
上述提示与技巧仅供参考,其目的仅限于为读者提供便利。与上述提示和技巧使用相关的全部风险或后果均应由使用者自行承担。