首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

使用ODBC连接数据库时总会出现Assert异常提示,求大神进来指点,必定重谢

2013-04-20 
使用ODBC连接数据库时总会出现Assert错误提示,求大神进来指点,必定重谢。开发环境为:MS VS2012出错信息如下

使用ODBC连接数据库时总会出现Assert错误提示,求大神进来指点,必定重谢。
开发环境为:MS VS2012
出错信息如下面图片所示

使用ODBC连接数据库时总会出现Assert异常提示,求大神进来指点,必定重谢

头文件如下:#pragma once
#include "T_stuinfo.h"

// CStuInfoDlg 对话框

class CStuInfoDlg : public CDialogEx
{
DECLARE_DYNAMIC(CStuInfoDlg)

public:
CStuInfoDlg(CWnd* pParent = NULL);   // 标准构造函数
virtual ~CStuInfoDlg();
// 对话框数据
enum { IDD = IDD_STUINFO };
protected:
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedOk();
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
CDatabase m_db;
CT_stuinfo m_stuinfo;
};

cpp文件如下:
// StuInfoDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "StuMag.h"
#include "StuMagDlg.h"
#include "StuInfoDlg.h"
#include "afxdialogex.h"
#include "afxdb.h"
// CStuInfoDlg 对话框

IMPLEMENT_DYNAMIC(CStuInfoDlg, CDialogEx)

CStuInfoDlg::CStuInfoDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CStuInfoDlg::IDD, pParent)
,m_stuinfo(&m_db)
{}

CStuInfoDlg::~CStuInfoDlg()
{}

void CStuInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CStuInfoDlg, CDialogEx)
ON_BN_CLICKED(IDOK, &CStuInfoDlg::OnBnClickedOk)
END_MESSAGE_MAP()

BOOL CStuInfoDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
return TRUE; 
}
void CStuInfoDlg::OnBnClickedOk()
{
UpdateData(true);
try
{
m_db.OpenEx(_T("DSN=StuMg"));
m_stuinfo.Open(CRecordset::dynamic,_T("select * from T_stuinfo"));
}
catch(CDBException e)
{
MessageBox(e.m_strError);
}
MessageBox(m_stuinfo.m_Name);
m_db.Close();
m_stuinfo.Close();
CDialogEx::OnOK();
}

说明:整个程序在编译和调试时都没有任何错误,也没有任何警告,但在运行到蓝色标记的代码时就出现图片所示的错误,选择中止程序会停止运行,选择重试,则程序会中断运行,并跳转到一个“afxcoll.cpp”的文件。
求大侠指点!
另外:头文件T_stuinfo.h 是从CRecordset派生的一个类,增加了数据表中相应的各个字段。且该类无任何问题,可以正常使用。 vc.net?ODBC?
[解决办法]
看看堆栈是哪行代码出错了?
[解决办法]
不是代码问题,是你系统问题,把SYSTEM32下的mfc110ud.dll重新下载个试下,怀疑这个文件坏了?

热点排行