我在用AdO添加或者删除数据库的时候报Runtime error错误,数据库用的是个封装的类
这个类在:http://www.codeproject.com/KB/database/caaadoclass1.aspx#CADODatabase
//该段出错
BOOL iRet;
CString abc;
while(!m_pRsTemp.IsEOF())
{
MessageBox("31");
iRet=m_pRsTemp.GetFieldValue("from",from);
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString()); MessageBox("32");
iRet=m_pRsTemp.GetFieldValue("to",to);
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString()); MessageBox("33");
if (from==selectuser || to==selectuser)
{
MessageBox("34");
// iRet=m_pRsTemp.Delete();//报错
m_pRsTemp.AddNew();//报错
m_pRsTemp.SetFieldValue(0,from);
m_pRsTemp.SetFieldValue(1,to);
m_pRsTemp.SetFieldValue(2,selectuser);
m_pRsTemp.SetFieldValue(3,CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"));
m_pRsTemp.Update(); }
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString());
MessageBox("35");
m_pRsTemp.MoveNext();
MessageBox("36");我是一个数据库,打开了两次,因为一个类用来存放数据,一个类用来查找数据并做相关的删除操作,不过我屏蔽一个存放数据的类,只用删除的类来打开一次的时候,还是报错runtime error
这个类在:http://www.codeproject.com/KB/database/caaadoclass1.aspx#CADODatabase
//该段出错
BOOL iRet;
CString abc;
while(!m_pRsTemp.IsEOF())
{
MessageBox("31");
iRet=m_pRsTemp.GetFieldValue("from",from);
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString()); MessageBox("32");
iRet=m_pRsTemp.GetFieldValue("to",to);
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString()); MessageBox("33");
if (from==selectuser || to==selectuser)
{
MessageBox("34");
// iRet=m_pRsTemp.Delete();//报错
m_pRsTemp.AddNew();//报错
m_pRsTemp.SetFieldValue(0,from);
m_pRsTemp.SetFieldValue(1,to);
m_pRsTemp.SetFieldValue(2,selectuser);
m_pRsTemp.SetFieldValue(3,CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"));
m_pRsTemp.Update(); }
if(!iRet)
AfxMessageBox(m_pRsTemp.GetLastErrorString());
MessageBox("35");
m_pRsTemp.MoveNext();
MessageBox("36");我是一个数据库,打开了两次,因为一个类用来存放数据,一个类用来查找数据并做相关的删除操作,不过我屏蔽一个存放数据的类,只用删除的类来打开一次的时候,还是报错runtime error
try
{
//有问题的代码块
}
catch (_com_error& e)
{
AfxMessageBox(e.Description());
}
-----------
你的表是空表吗?
如果不是,最好先MoveLast再AddNew
得看看你的Open函数怎么调用的~
Addnew没报错,刚才弄错了,只是delete的时候报错
CString strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=msg.mdb");
if(m_pDbTemp.Open(strConnection))
{
m_pRsTemp = CADORecordset(&m_pDbTemp);
if(!m_pRsTemp.Open("msgdb", CADORecordset::openTable))
AfxMessageBox(m_pRsTemp.GetLastErrorString());
}
else
{
AfxMessageBox(m_pDbTemp.GetLastErrorString());
DWORD dwError = m_pDbTemp.GetLastError();
return ;
}addnew没报错,只有delete的时候出错
CADORecordset Error
Code = 80004005
Code meaning = 未指定的错误
Source = Microsoft Cursor Engine
Description = 键列信息不足或不正确。更新影响到多行忘记说了,我删除数据库虽然报哪个runtime error,但是他却把所有符合要求的都删掉了,也就是哪个description描述的影响到多行
各位大侠看看什么情况
----------
是不是插入也失败了?
根据错误描述,可以检查一下有没有插入重复的键值或者键列为空?
得看一下你的表结构定义了~