关于OLEDB 大字段操作一点总结

本文介绍了使用C++操作OLEDB进行大字段(BLOB, CLOB)操作的总结和心得。主要内容包括大字段的绑定方法,如何判断和处理大字段,以及面对大字段和普通字段混合情况下的访问器创建策略。提供了关键代码片段,但不完整,适用于有一定基础的开发者参考。" 108208547,8604245,字符串数字变换:从S到目标字符串的转换过程,"['java', '算法', '字符串']
摘要由CSDN通过智能技术生成

OLEDB技术是微软提供的一套非常强悍的面向不同数据源的数据库接口,而我所接触的开发人员中使用的人并不多,大部分使用基于OLEDB的ADO方式进行数据库操作。使用OLEDB操作普通字段的资料在网上很常见,而关于BLOB,CLOB大字段的操作却比较少。现在我们就来聊聊使用C++对OLEDB的大字段操作的一些总结和心得。

一,大字段绑定

使用OLEDB操作数据之前要进行列绑定,实际准备一块内存结构,与数据库相对,将我们要获取的数据直接放到准备好的内存结构中。普通字段的绑定比较简单,大致过     程如下

DBBINDING *  rgBindings = new DBBINGING(cColumns * sizeof(DBBINDING));

//根据列信息 填充绑定结构信息数组
for( iCol = 0; iCol < cColumns; iCol++ )
{
<span style="white-space:pre">	</span>rgBindings[iCol].iOrdinal   = rgColumnInfo[iCol].iOrdinal;
<span style="white-space:pre">	</span>rgBindings[iCol].dwPart     = DBPART_VALUE|DBPART_LENGTH|DBPART_STATUS;
<span style="white-space:pre">	</span>rgBindings[iCol].obStatus   = dwOffset;
<span style="white-space:pre">	</span>rgBindings[iCol].obLength   = dwOffset + sizeof(DBSTATUS);
<span style="white-space:pre">	</span>rgBindings[iCol].obValue    = dwOffset+sizeof(DBSTATUS)+sizeof(ULONG);
<span style="white-space:pre">	</span>rgBindings[iCol].dwMemOwner = DBMEMOWNER_CLIENTOWNED;
<span style="white-space:pre">	</span>rgBindings[iCol].eParamIO   = DBPARAMIO_NOTPARAM;
<span style="white-space:pre">	</span>rgBindings[iCol].bPrecision = rgColumnInfo[iCol].bPrecision;
<span style="white-space:pre">	</span>rgBindings[iCol].bScale     = rgColumnInfo[iCol].bScale;
<span style="white-space:pre">	</span>rgBindings[iCol].wType      = DBTYPE_WSTR;//rgColumnInfo[iCol].wType;<span style="white-space:pre">	</span>//强制转为WSTR
<span style="white-space:pre">	</span>rgBindings[iCol].cbMaxLen   = rgColumnInfo[iCol].ulColumnSize * sizeof(WCHAR);
<span style="white-space:pre">	</span>dwOffset = rgBindings[iCol].cbMaxLen + rgBindings[iCol].obValue;
<span style="white-space:pre">	</span>// 可以对dwOffset设定字节对齐
}
// 完成绑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值