特别奇怪的问题

wdlglb 2016-01-26 09:30:46
代码如下
只有当我把定义
_ConnectionPtr pConn(__uuidof(Connection)); //数据库连接
_RecordsetPtr pRst=NULL; //数据集
CoInitialize(NULL);
有关数据库的操作放在同一个函数中的时候才可以正常使用,如果分开放就会出现
“R6010

- abort() has been called



#include "stdafx.h"
#include "dialogtest1.h"
#include "resource.h"
#include <string>
#define MAX_LOADSTRING 100
using namespace std;

_ConnectionPtr pConn(__uuidof(Connection)); //数据库连接
_RecordsetPtr pRst=NULL; //数据集
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, Main_Proc);
return 0;
}
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDOK:
{
// MessageBox(hwnd,"test","Test",MB_OK);
CoInitialize(NULL);
try
{
pConn->ConnectionString="Provider=SQLOLEDB; Server=Z;Data Source=Z;Initial Catalog=人事管理系统;User ID=sa;Password=123456";
pConn->Open("","","",adConnectUnspecified);
}
catch(_com_error &e)
{
::MessageBoxA(NULL,e.ErrorMessage(),"警告",MB_OK|MB_ICONWARNING);
}

try
{

if(S_OK==pRst.CreateInstance(__uuidof(Recordset)))
{
::MessageBoxA(NULL,"创建数据集成功!","Message",MB_OK);
}
else
{
::MessageBoxA(NULL,"创建数据集失败!","Message",MB_OK);
//return -1;
}
pRst=pConn->Execute("select * from 员工信息",NULL,adCmdText);

}
catch (_com_error &e)
{
::MessageBoxA(NULL,e.Description(),"提示",MB_OK|MB_ICONWARNING);
}

}
break;
case IDCANCEL:
{
HWND buf=NULL;
pRst->MoveNext();
if(pRst->adoEOF)
{
buf=GetDlgItem(hwnd,IDCANCEL);
EnableWindow(buf,false);
}

buf=GetDlgItem(hwnd,IDC_EDIT1);
SetWindowText(buf,(_bstr_t)pRst->GetCollect("员工姓名"));
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
pRst->Close();
pConn->Close();
pRst.Release();
EndDialog(hwnd, 0);
}
...全文
270 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把链接数据库的分装一个类。网上有很多这样的。你只要搜索一下。测试一下。
worldy 2016-01-28
  • 打赏
  • 举报
回复
CoInitialize(NULL);放到 Main_OnInitDialog里去
Sandrer 2016-01-28
  • 打赏
  • 举报
回复
引用 1 楼 wdlglb 的回复:
大神们来看看呢 关于SQL调试都不好调试,并且不显示抛出异常
谁说没异常? catch (_com_error e) 这个就是啦
wdlglb 2016-01-28
  • 打赏
  • 举报
回复
引用 4 楼 Sandrer的回复:
[quote=引用 1 楼 wdlglb 的回复:] 大神们来看看呢 关于SQL调试都不好调试,并且不显示抛出异常
谁说没异常? catch (_com_error e) 这个就是啦[/quote] 弹出了消息,但是是个空的…没提示
oyljerry 2016-01-27
  • 打赏
  • 举报
回复
分开你要看看你的是不是初始化com了,同时各个指针是否正确初始化
见习学术士 2016-01-27
  • 打赏
  • 举报
回复
pConn 也用 CreateInstance 创建,CoInitialize(NULL); 放到tWinMain 里面去
wdlglb 2016-01-27
  • 打赏
  • 举报
回复
大神们来看看呢 关于SQL调试都不好调试,并且不显示抛出异常

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧