C++:SQLServer字段赋值
大前提:
1、 初始化环境
2、 创建连接实例
3、 创建记录集实例
注意点:
1、AddNews失败问题:
(1)是否将CursorTypeEnum cursorType, LockTypeEnum lockType 两值分别设为 adOpenDynamic, adLockOptimistic等可添加、删除值属性。
(2)记录集是否打开。
(3)最后Update();
2、设置字段值错误:
(1)赋值超过其值范围
(2)将CursorTypeEnum cursorType, LockTypeEnum lockType 两值分别设为 adOpenDynamic, adLockOptimistic时,以下方法都能将字段值设置成功:
vtFld = m_pRecordset->GetCollect(lpFieldName);
m_pRecordset->PutCollect(vtIndex, vtFld);
HRESULT hr = m_pRecordset->get_Collect(vtIndex,&vtFld);
if (FAILED(hr))
{
return false;
}
HRESULT hr = m_pRecordset->put_Collect(vtIndex, var);
if (SUCCEEDED(hr))
{
return true;
}
vtFld = m_pRecordset->Fields->GetItem(vtIndex)->GetValue();
m_pRecordset->Fields->GetItem(vtIndex)->PutValue(var);
HRESULT hr = m_pRecordset->Fields->GetItem(vtIndex)->get_Value(&vtFld);
if (FAILED(hr))
{
return false;
}
HRESULT hr = m_pRecordset->Fields->GetItem(vtIndex)->put_Value(vtFld);
if (SUCCEEDED(hr))
{
return true;
}
vtFld = m_pRecordset->Fields->GetItem(vtIndex)->Value;
m_pRecordset->Fields->GetItem(lpFieldName)->Value = var;
备注:当CursorTypeEnum cursorType, LockTypeEnum lockType 的值分别设置为:adOpenUnspecified , adLockUnspecified时,put_Value可以设置值成功,其他的如PutValue、Value都设置值失败,另外AddNew会出错。这就是将它们全部测试一遍的原因。测试中发现PutValue是put_Value 的进一步封装,这与前者矛盾。不管怎样,遇到离奇的错误,可能是我们某一个属性值设置的不一样 。。。
最新文章
- 基于Bootstrap里面的Button dropdown打造自定义select
- Redis快速入门详解
- TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别
- 在Android上实现使用Facebook登录(基于Facebook SDK 3.5)
- 《单页Web应用--温故JavaScrpt》学习笔记整理
- js获取客户端操作系统
- MySQL 使用方法简单教程
- Hadoop中的各种排序
- 一款js、css压缩工具yuicompressor
- C++关联容器<;map>;简单总结
- 3DES加密算法
- VS 2012 插件卸载(删除自己安装的插件)
- Git 分支模型
- Python的优势及应用领域
- 常用socket选项
- Exception 03 : org.hibernate.MappingException: Unknown entity: org.hibernate.cfg.Configuration
- Java NIO系列教程(五)Buffer
- [翻译] CHAnimation
- [BZOJ 2186][SDOI 2008] 莎拉公主的困惑
- Python+MySQL开发医院网上预约系统(课程设计)二