c++ - GetFieldValue 时间变量错误

标签 c++ visual-c++ mfc

我已经声明了以下结构来保存通过 getfieldvalue 从 access db 检索到的数据: 错误发生在 Spds_old->Time_old.push_back(OldTime);在数据库中,该值为下午 3:00:00。 你能告诉我错误吗?谢谢。如果您需要更多信息,请告诉我。 谢谢 - 基兰

typedef struct {
        std::vector<CString> pname_old;
        std::vector<CDBVariant> Date_old;
        std::vector<CDBVariant> Time_old;

    } Spd_old;

Spd_old *Spds_old;

然后在cpp文件中这是代码

                CRecordset rset(&pdatabase);
                CString pName;
                CDBVariant OldDate;
                CDBVariant  OldTime;



CString selectionStr = "SELECT I.PType,I.Date,I.Time FROM CCYX I,(select PType, MAX(Date) AS Date1";
                selectionStr += " FROM CCYX GROUP BY PType) T WHERE I.PType = T.PType AND I.Date =T.Date1"; 




                try
                {
                if(rset.Open(CRecordset::forwardOnly, selectionStr))
                {

                    try
                    {
                        while(!(rset.IsBOF()&&rset.IsEOF()))
                        {
                            m_Log->Log("Copying Previous spd Values from Access DB");
                            rset.GetFieldValue((short)0 ,pName );
                            rset.GetFieldValue((short)1 ,OldDate );
                            rset.GetFieldValue((short)2 ,OldTime);

                            Spds_old->pname_old.push_back(pName);
                            Spds_old->Date_old.push_back(OldDate);
                            Spds_old->Time_old.push_back(OldTime);

最佳答案

问题是 CDBVariant 无法复制,因此不适合存储在 std::vector 中。一种解决方法是改为存储指针:

std::vector<std::unique_ptr<CDBVariant>> Date_old;
std::vector<std::unique_ptr<CDBVariant>> Time_old;
...
std::unique_ptr<CDBVariant> OldDate(new CDBVariant);
...
rset.GetFieldValue((short)1 , *OldDate);
...
Spds_old->Date_old.push_back(std::move(OldDate));

我在上面的示例中使用了 std::unique_ptr,但您也可以使用其他选项。

关于c++ - GetFieldValue 时间变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046779/

相关文章:

c++ - 如何在 MFC 编辑器中对资源 ID 进行编辑以传播到代码?

c++ - 哪些是从线程通过 PostMessage 发送 CString 的安全方法

c++ - bool 赋值 204 为 false

c++ - 您如何减少 Visual C++ 项目(原生 C++)的编译时间和链接时间?

c++ - MMX 与 SSE2 性能比较

c++ - Visual Studio 2019 : Pass include paths between chain-referenced projects

c++ - 如何在 C++ 中手动运行消息泵

c++ - C++ 的时区偏移类型没有明显的时间戳。滚我们自己的?

visual-c++ - 在 Visual Studio 项目模板中添加引用?

c++ - 立方体 OPENGL 上缺少面