各位帮忙看看哪里出错了? 数据库操作

sitiao2009 2010-05-02 04:59:08
代码如下,要求实现功能是:将数据库里班次信息表里的发车时间和系统时间比较,然后在备注里显示是否已经发车。
我运行结果出问题了,所有备注的信息却是第一行比较的结果,只是把第一行备注信息填入到了其他所有备注

void CBus::sql_AutoUpdate()
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM 班次信息";
//执行SELETE语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
//返回各列的值
if (m_pRecordset->adoEOF)
{
return;
}
else
{
strRunTime = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("发车时间");
}

/////////////////////////////获得系统当前时间
COleDateTime;
COleDateTime datetime;
datetime=COleDateTime::GetCurrentTime();
CString str2=datetime.Format("%Y-%m-%d %H:%M:%S");

////////////////////////////时间比较
COleDateTime t;
t.ParseDateTime( strRunTime );
COleDateTime p;
p.ParseDateTime( str2 );
if( t<=p)
{
CString csql;
csql="select * from 班次信息";
csql="update 班次信息 set 备注 ='此班车已发出!' ";
//执行UPDATE语句
_bstr_t vSQL= _bstr_t(csql);
m_AdoConn.ExecuteSQL(vSQL);
}
else
{
CString csql;
csql="select * from 班次信息 ";
csql="update 班次信息 set 备注 = '未发车!' ";
//执行UPDATE语句
_bstr_t vSQL= _bstr_t(csql);
m_AdoConn.ExecuteSQL(vSQL);
}

//断开与数据库的连接
m_AdoConn.ExitConnect();
}
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sitiao2009 2010-05-05
  • 打赏
  • 举报
回复
vSQL1 = "UPDATE 班次信息 SET 备注 = '该班次已发车!' WHERE 发车时间 <=(SELECT GETDATE())";
vSQL2 = "UPDATE 班次信息 SET 备注 = '未发车!' WHERE 发车时间 >(SELECT GETDATE())";
sitiao2009 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leitianjun 的回复:]
[/Quote]
谢谢你的提醒,我现在已经解决了呵呵
其实很简单的,是我的T-SQL语句没有学好

void CBus::sql_AutoUpdate()
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL1,vSQL2;
vSQL1 = "UPDATE 班次信息 SET 备注 = '该班次已发车!' WHERE 发车时间 >(SELECT GETDATE())";
vSQL2 = "UPDATE 班次信息 SET 备注 = '未发车!' WHERE 发车时间 <(SELECT GETDATE())";
//执行SELETE语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(vSQL1);
m_pRecordset = m_AdoConn.GetRecordSet(vSQL2);
}

这样就搞定了对数据库的批处理啦 哈哈
  • 打赏
  • 举报
回复
update 班次信息 set 备注 = '未发车!' //这条也是,都是对整张表进行的UPDATE更新操作,一定注意后面的where 条件语句,例如 where time>'2005-01-01'的,给改一下。
  • 打赏
  • 举报
回复
update 班次信息 set 备注 ='此班车已发出!' //语句问题,

应处理如下:
根据条件进行修改某一条记录,象你这样的语句,只要条件成立,就执行这条语句,所以就把所有备注都改了。

update 班次信息 set 备注 ='此班车已发出!' where 条件='xxx条件';

如果条件满足后,在进行加上where 判断语句才行!!!
sitiao2009 2010-05-03
  • 打赏
  • 举报
回复
没人会吗?
sitiao2009 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yincheng01 的回复:]
帖子都沉底了!只能帮楼主顶到上面,以期更多高手帮楼主解决难题!
[/Quote]
泄泻啦 哈哈
尹成 2010-05-02
  • 打赏
  • 举报
回复
帖子都沉底了!只能帮楼主顶到上面,以期更多高手帮楼主解决难题!
sitiao2009 2010-05-02
  • 打赏
  • 举报
回复
来人呐!!!!!!!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧