MFC ADO链接Access 安插一条新的数据
MFC ADO链接Access 插入一条新的数据
想Access表中插入一条新的数据怎么做,我插入新数据没有open函数
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->MoveLast();//移动到记录末尾
m_pRecordset->AddNew();
m_pRecordset->PutCollect("InOut_ID", _variant_t(str));
...
...
...
m_pRecordset->Update();
我用AddNew添加的新数据 但是遇到几个问题:
1.表中的ID是主键,没有自动自动编号 那我插入的时候怎么就能将新的数据放到最后一列或者最前
2.有一个属性是时间 我怎么在MFC下将系统时间赋给这个列(就像Access下的Now(),MFC的CTime类型不匹配)。
就这两个问题 求大神们帮忙解决:
------解决方案--------------------
1、Access支持自动编号哈,最好设置一个主键的自动编号。也可以在插入数据前,先查询最大的编号是多少,如 select max(id) from 表,然后给它加1当做新编号,插入数据库,这样只能针对数字的类型。如果ID是字符串的话,就不好处理了,最好还是弄个数字类型的自动编号当做主键。
2、用PutCollect方法可以写入时间,VARIANT类型中有个属性就是时间类型的,你看看MSDN关于这个类型的介绍,MFC中CTime或COleDateTime都可以获取时间,应该可以直接赋值,几年不用MFC都忘光了,现在主要用C#,哈哈,这个简单。
------解决方案--------------------
需要OPEN,也可以直接使用 :
_ConnectionPtr 的 Excute 方法执行SQL 语句,这样你上面的问题都可以解决。
比如插入
想Access表中插入一条新的数据怎么做,我插入新数据没有open函数
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->MoveLast();//移动到记录末尾
m_pRecordset->AddNew();
m_pRecordset->PutCollect("InOut_ID", _variant_t(str));
...
...
...
m_pRecordset->Update();
我用AddNew添加的新数据 但是遇到几个问题:
1.表中的ID是主键,没有自动自动编号 那我插入的时候怎么就能将新的数据放到最后一列或者最前
2.有一个属性是时间 我怎么在MFC下将系统时间赋给这个列(就像Access下的Now(),MFC的CTime类型不匹配)。
就这两个问题 求大神们帮忙解决:
MFC
Access
插入新的一条数据
Now()
------解决方案--------------------
1、Access支持自动编号哈,最好设置一个主键的自动编号。也可以在插入数据前,先查询最大的编号是多少,如 select max(id) from 表,然后给它加1当做新编号,插入数据库,这样只能针对数字的类型。如果ID是字符串的话,就不好处理了,最好还是弄个数字类型的自动编号当做主键。
2、用PutCollect方法可以写入时间,VARIANT类型中有个属性就是时间类型的,你看看MSDN关于这个类型的介绍,MFC中CTime或COleDateTime都可以获取时间,应该可以直接赋值,几年不用MFC都忘光了,现在主要用C#,哈哈,这个简单。
------解决方案--------------------
需要OPEN,也可以直接使用 :
_ConnectionPtr 的 Excute 方法执行SQL 语句,这样你上面的问题都可以解决。
比如插入
CString strSql;
strSql.Format(insert(字段1,字段2,字段3,time) values(插入值1,插入值2,插入值3,now()));
_variant_t RecordsAffected;
m_pConnection->Excute(strSql, RecordsAffected, 0);