MFC 出现debug assertion failed的问题
我用MFC与sql2008写的程序用列表显示数据库中表的内容想实现在列表中添加用户后立刻刷新,然后看到添加后的内容但出现一下错误断点调试发现是执行OnBnClickeda...
我用MFC 与 sql2008 写的程序 用列表显示数据库中表的内容想实现在列表中添加用户后立刻刷新,然后看到添加后的内容但出现一下错误
断点调试 发现是执行OnBnClickedaddbutton()这个函数中的RefreshData()的时候出现上述错误,如何解决这是代码
void CUserManage::RefreshData()
{
m_userlist.DeleteAllItems();
m_userlist.SetRedraw(FALSE);
CString sql;
sql.Format(_T("select * from 用户密码表"));
try
{
m_userset.m_pDatabase=&m_database;
m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
for(int i=0;i<m_userset.GetRecordCount();i++)
{
m_userlist.InsertItem(i,(CString)m_userset.column1);
m_userlist.SetItemText(i,1,(CString)m_userset.column3);
m_userset.MoveNext();
}
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
m_userlist.SetRedraw(TRUE);
return;
}
m_userlist.SetRedraw(TRUE);
}
BOOL CUserManage::OnInitDialog(void)
{
CDialog::OnInitDialog();
m_userlist.InsertColumn(0,_T("用户名"));//初始list control控件
m_userlist.InsertColumn(1,_T("权限"));
CRect r;
m_userlist.GetWindowRect(&r);
int wid=r.Width()/2;
m_userlist.SetColumnWidth(0,wid);
m_userlist.SetColumnWidth(1,wid);
m_userlist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
RefreshData();
return TRUE;
}
void CUserManage::OnBnClickedaddbutton()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
CString sql;
int i=0;
CTime m_time=CTime::GetCurrentTime();
CString time=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
sql.Format(_T("insert into 用户密码表 values ('%s','%s','%s')"),m_addusername,m_addpassword,m_addpower);
try
{
m_database.ExecuteSQL(sql);
}
catch(CDBException e1)
{
AfxMessageBox(_T("数据库操作失败"));
}
catch(CMemoryException e2)
{
AfxMessageBox(_T("数据库操作失败"));
}
MessageBox(_T("添加成功"));
RefreshData();
} 展开
断点调试 发现是执行OnBnClickedaddbutton()这个函数中的RefreshData()的时候出现上述错误,如何解决这是代码
void CUserManage::RefreshData()
{
m_userlist.DeleteAllItems();
m_userlist.SetRedraw(FALSE);
CString sql;
sql.Format(_T("select * from 用户密码表"));
try
{
m_userset.m_pDatabase=&m_database;
m_userset.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
for(int i=0;i<m_userset.GetRecordCount();i++)
{
m_userlist.InsertItem(i,(CString)m_userset.column1);
m_userlist.SetItemText(i,1,(CString)m_userset.column3);
m_userset.MoveNext();
}
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
m_userlist.SetRedraw(TRUE);
return;
}
m_userlist.SetRedraw(TRUE);
}
BOOL CUserManage::OnInitDialog(void)
{
CDialog::OnInitDialog();
m_userlist.InsertColumn(0,_T("用户名"));//初始list control控件
m_userlist.InsertColumn(1,_T("权限"));
CRect r;
m_userlist.GetWindowRect(&r);
int wid=r.Width()/2;
m_userlist.SetColumnWidth(0,wid);
m_userlist.SetColumnWidth(1,wid);
m_userlist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
RefreshData();
return TRUE;
}
void CUserManage::OnBnClickedaddbutton()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
CString sql;
int i=0;
CTime m_time=CTime::GetCurrentTime();
CString time=m_time.Format(_T("%Y-%m-%d %H:%M:%S"));
sql.Format(_T("insert into 用户密码表 values ('%s','%s','%s')"),m_addusername,m_addpassword,m_addpower);
try
{
m_database.ExecuteSQL(sql);
}
catch(CDBException e1)
{
AfxMessageBox(_T("数据库操作失败"));
}
catch(CMemoryException e2)
{
AfxMessageBox(_T("数据库操作失败"));
}
MessageBox(_T("添加成功"));
RefreshData();
} 展开
2013-06-02
展开全部
dbcore.cpp Line:1072是void CUserManage::RefreshData()吗,F5多调几次,先找哪一行问题
更多追问追答
追问
就是OnBnClickedaddbutton()这个函数中调用的RefreshData()(也就是给出代码的最后一行)这一行出问题,这个RefreshData()就是void CUserManage::RefreshData()
问题出在哪???
追答
在Line:1072打断点,F11进入到RefreshData()函数中一步步走
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询