SQL Server 2000 Windows CE版 - C++编程(转贴)

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日
相关连接
将使用技巧提交给Windows Embedded社区

供稿人:Embedded MVP,Abraham Kcholi

Microsoft SQL Server™ 2000 for Windows® CE是一个得心应手的小工具。然而,针对C++开发人员提供的帮助内容却较为混乱。当我们着手利用专门针对SQL Server CE提供的对象链接与嵌入数据库(OLEDB)进行开发活动时,通常会查看相关示例,并感觉得心应手;然而,当我们试图为普通用户创建一个示例时,则会遇到某些绑定问题。下面提供了一种可能有助于克服绑定问题的解决方案。

  1. 从Rowset(行集合)对象中获取数据
  2. 在行集合中获取有关列的信息
    hr = m_pIRowset->QueryInterface(IID_IcolumnsInfo,(void **)&pIColInfo);
    hr = pIColInfo->GetColumnInfo(&cCol,&pColInfo,&pStringBuffer);
    
  3. 使用上述信息创建绑定(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);
    
  4. 将绑定传递给Rowset(行集合)对象,并拾取存取程序句柄。

上述提示与技巧仅供参考,其目的仅限于为读者提供便利。与上述提示和技巧使用相关的全部风险或后果均应由使用者自行承担。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值