我先将记录集指针定位待修改的数据项,
sql.Format("SELECT * FROM 员工信息表 WHERE 员工号 = '%s' " , ST_NO);
m_pRecordset_OLD = m_pConnection->Execute( _bstr_t(sql) , &RecordsAffected , adCmdText);
再用下面方法进行数据字段的更新。
m_pRecordset->PutCollect("性别" , _bstr_t(gander));
m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
m_pRecordset->Update(); 但运行总出现 Runtime Library的错误对话框,我不知道为什么,求解释!!
sql.Format("SELECT * FROM 员工信息表 WHERE 员工号 = '%s' " , ST_NO);
m_pRecordset_OLD = m_pConnection->Execute( _bstr_t(sql) , &RecordsAffected , adCmdText);
再用下面方法进行数据字段的更新。
m_pRecordset->PutCollect("性别" , _bstr_t(gander));
m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
m_pRecordset->Update(); 但运行总出现 Runtime Library的错误对话框,我不知道为什么,求解释!!
m_pRecordset->PutCollect("性别" , _bstr_t(gander));
m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
m_pRecordset->Update();
update直接更改.
pRecordset 只有 EditMode方法, 没有Edit呀。。
我试了, 用
sql.Format("UPDATE 员工信息表 SET 性别 = '%s' WHERE 员工号 = '%s' " , gander , NO);
m_pRecordset_OLD = m_pConnection->Execute( _bstr_t(sql) , &RecordsAffected , adCmdText);一样弹出那个错误对话框! 求解释
你下载这个例子看看
另外,你用m_pRecordset->GetCount()(类似这个函数,就是取得有多少条记录数)看看有为有记录,如果没有肯定是错的,如果有,你就先用MoveFirst()来移动到第一条记录再修改
我添加 和 修改都用的是
m_pRecordset->PutCollect("性别" , _bstr_t(gander));
m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
m_pRecordset->Update();
这种句式, 唯一不同的是添加我把SQL语句置为“SELECT * FROM 员工信息表”然后m_pRecordset_NEW->AddNew(); 添加新条目。为什么我添加没问题, 就修改有问题! 求解释!!
这里我的并没有出现问题啊..
捕获一下错误信息
你看下是什么错误.. 有可能是别的错误.. 语句是没什么问题...
给你看下我的..
UpdateData();
CString sql;
CString sex;
if(m_isex==0)
sex="男";
else sex="女";
sql.Format("update test set NAME = '%s',SEX='%s',TEL='%s',QQ='%s',Address='%s' where ID = %d",m_name,sex,m_tel,m_qq,m_address,m_nID);
CADO m_ado;
try
{
m_ado.ADOinit();//打开连接对像
m_ado.Execute(sql);
MessageBox("修改成功!","提示");
m_ado.CloseConn();//关闭连接对像
}
catch(_com_error e)
{
MessageBox(e.Description());
return;
}_RecordsetPtr CADO::Execute(CString sql)//执行SQl语句
{
try
{
if(m_pConnection->State==adStateOpen)
return m_pConnection->Execute(_bstr_t(sql),NULL,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return NULL;
}其它的就不知道是什么问题了..我上面是没什么问题的..
我也估计可能是数据库有什么冲突了,不是代码的问题,因为没捕到错误信息, 直接就弹出Runtime Library的错误对话框, 但我现在不知道是哪错了
我只是用sql语句更新可以了,
但我这种方法更新依旧不行~ m_pRecordset->PutCollect("性别" , _bstr_t(gander));
你给的例子我看了, 跟我的差不多呀~