• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > OLEDB连接删除修改数据表问题,删除记录的时候成功但是数据库记录没删除

OLEDB连接删除修改数据表问题,删除记录的时候成功但是数据库记录没删除

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 OLEDB连接删除修改数据表问题,删除记录的时候成功但是数据库记录没删除等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: OLE DB 连接删除 修改数据表问题,删除记录的时候成功但是数据库记录没删除
描述:

现在问题是能连上数据库,但是删除记录和修改记录存在问题,删除记录时,返回值hr为0表示成功,但是数据库里记录没有删除,不知道问题出在哪里,麻烦大侠帮帮看看,谢谢
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#include <Windows.h>
#include <ole2.h>
#include <TCHAR.h>
#define COM_NO_WINDOWS_H    //如果已经包含了Windows.h或不使用其他Windows
//库函数时
#define DBINITCONSTANTS
#define INITGUID
#define OLEDBVER 0x0270 
#include <oledb.h>
#include <oledberr.h>
#include <msdasc.h>
#define GRS_ROUNDUP_AMOUNT 8 
#define GRS_ROUNDUP_(size,amount) (((ULONG)(size)+((amount)-1))&~((amount)-1)) 
#define GRS_ROUNDUP(size) GRS_ROUNDUP_(size, GRS_ROUNDUP_AMOUNT) 
#define GRS_ALLOC(size) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size)
#define GRS_FREE(p)  if( NULL != (p) ){HeapFree(GetProcessHeap(),0,p);(p) = NULL;}
#define GRS_COM_RELEASE(p) if(p){(p)->Release();(p)=NULL;}
#define GRS_COM_CHECK(a) if(FAILED(a)){::DebugBreak();goto GRS_CLEARUP;}
#define GRS_USE_IDBCREATECOMMAND //使用IDBCreateCommand接口创建Session对象 注释后使用习惯的IOpenRowset接口
//#define GRS_USE_IMULTIPLERESULTS //使用IMultipleResults接口得到结果集 注释后直接使用
int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
 ::CoInitialize(NULL);
 IDBPromptInitialize* pIDBPromptInitialize = NULL;
 IDBInitialize*   pIDBInitialize   = NULL;
 IDBCreateSession*  pIDBCreateSession  = NULL;
 IOpenRowset*   pIOpenRowSet   = NULL;
 IDBCreateCommand*  pIDBCreateCommand  = NULL;
 ICommandText*   pICommandText   = NULL;
 ICommandProperties*  pICommandProperties  = NULL;
 IMultipleResults*  pIMultipleResults  = NULL;
 IRowset*    pIRowset    = NULL;
 IColumnsInfo*   pIColumnsInfo           = NULL;
 IAccessor*              pIAccessor              = NULL;
 IRowsetChange*   pIRowsetChange   = NULL;
 IRowsetUpdate*   pIRowsetUpdate = NULL;
 DBPROPSET ps[1];
 DBPROP prop[3];
//==============================================================================================
 //注意改写这个SQL语句,首先保证SQL语句是正确的
 TCHAR* pSQL = _T("SELECT name,id FROM bb");
//============================================================================================== 
 ULONG                   cColumns                = 0;
 DBCOLUMNINFO*   rgColumnInfo            = NULL;
 LPWSTR                  pStringBuffer           = NULL;
 DBROWCOUNT  cRowsAffected = 0;//注意不要被这个参数迷惑大多数情况下它是没用的
          //并不能通过它知道结果集中实际包含多少行
 ULONG                   iCol     = 0;     
 ULONG                   dwOffset                = 0;
 DBBINDING*              rgBindings              = NULL;
 HACCESSOR    phAccessor    = NULL;
 void*     pData                   = NULL;
 ULONG                   cRowsObtained   = 0;
 HROW*     rghRows                 = NULL;
 ULONG                   iRow     = 0;
 LONG                    cRows                   = 10;//一次读取10行
 DBROWSTATUS    pdwStatus    = 0; //行状态 实际就是DWORD类型
 void*     pCurData    = NULL;
 void*     pNewData    = NULL;
 HROW     hNewRows    = NULL;
 HRESULT hr;
 DWORD dwUpdateRows;
 HROW *pUpRow;
//============================================================================================================
 //1、初始化部分,数据库连接
 GRS_COM_CHECK(CoCreateInstance(CLSID_DataLinks, NULL, CLSCTX_INPROC_SERVER,
  IID_IDBPromptInitialize, (void **)&pIDBPromptInitialize));
 //下面这句将弹出前面所说的对话框
 GRS_COM_CHECK(pIDBPromptInitialize->PromptDataSource(NULL, ::GetDesktopWindow(),
  DBPROMPTOPTIONS_PROPERTYSHEET, 0, NULL, NULL, IID_IDBInitialize,
  (IUnknown **)&pIDBInitialize));
 GRS_COM_CHECK(pIDBInitialize->Initialize());//根据对话框采集的参数连接到指定的数据库
//============================================================================================================
//============================================================================================================
 //2、创建事务部分
 GRS_COM_CHECK( pIDBInitialize->QueryInterface(IID_IDBCreateSession, (void**)&pIDBCreateSession) );
 //创建一个IOpenRowset接口 或者直接创建一个IDBCreateCommand 接口
#ifdef GRS_USE_IDBCREATECOMMAND
 //使用IDBCreateCo

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • OLEDB连接删除修改数据表问题,删除记录的时候成功但是数据库记录没删除

相关文章

  • 2017-06-04 vc++开发activeX的问题
  • 2017-06-05 问个COM内存分配的问题。
  • 2017-06-05 奇怪的函数里的变量,我相信很多初学者肯定碰到过,大家一定要进来看看?
  • 2017-06-05 怎样得到别人进程开始地址和结束地址
  • 2017-06-05 如何在程序中得到一个信号量的当前状态!!(急!!!!)
  • 2017-06-04 怎样用ATL写一个含有其它组件的进程外COM
  • 2017-06-05 GUI下面创建进程错误,大家帮忙看一下
  • 2017-06-04 ActiveMovieControlObject是那个dllORocx?
  • 2017-06-04 如何在对话框中播放flv格式文件
  • 2017-06-05 我在读一个很大的文件时大概有xxx兆,因为要花好几分钟,所以会发现屏幕会白屏,怎么解决

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • MFCwebbrowser控件如何取出htmlElement?
    • 菜农。和我联系一下,有事请教,很急
    • 用VC编写COM给VB/VBScript调用,如何传回数组值?
    • 用atl写dll,method中returntype及[outretval]参数选项怎么是灰的?
    • 如何在WebBrower中,响应网页登陆事件?
    • 一个让我快崩溃的问题?MSXML4DLL中成功发送,MSXMLDLL中接收失败
    • COM+应用,发布客户端时遇到问题,兄弟姐妹们来帮忙吧
    • linkerror?help?
    • hook卸载失败怎么办?
    • 请问:如果把MFCexe修改成MFCdll大致需要多少工作量,还要注意些什么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有