使用ODBC连接数据库时总会出现Assert错误提示,求大神进来指点,必定重谢。
开发环境为:MS VS2012
出错信息如下面图片所示
头文件如下:#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重新下载个试下,怀疑这个文件坏了?