• WinCE内嵌数据库使用小问题


    用WinCE内嵌的数据库做个存储短信的程序,犯了许多错误,

    小记下:

    1:定义属性

    #define pidPhoneNo MAKELONG(CEVT_LPWSTR,2)

    或者

    const CEPROPID pidPhoneNo = MAKELONG(CEVT_LPWSTR,2);

    2:创建数据库

    CEDBASEINFO结构体的wNumSortOrder最大为4

    windbase.h 头文件中

    #define __CEDB_MAXSORTORDER 4

    CEDBASEINFO结构中wNumSortOrder定义

    WORD     wNumSortOrder;     //@field Number of sort orders active in the database

                                    // Maximum is CEDB_MAXSORTORDER.

    个人理解是需要进行排序的属性数,最多4个属性进行排序,不是指一个记录只能有4个属性

    个人程序中只用一个属性进行排序,其他属性不排序,貌似不超过最大属性字节限制,可以任意多个属性。

    ceDBinfo.rgSortSpecs[0].propid=pidTime;

    ceDBinfo.rgSortSpecs[0].dwFlags=CEDB_SORT_DESCENDING|CEDB_SORT_CASEINSENSITIVE; //降序,忽略大小写

    3:输出记录时属性的输出次序

    CEOID ceOid;

    WORD wProps;

    DWORD dwRecSize;

    PBYTE pBuff =0;

    PCEPROPVAL pRecord;

    ceOid = CeSeekDatabase(m_hDB,CEDB_SEEK_BEGINNING,k,NULL);

    ceOid = CeReadRecordProps(m_hDB,CEDB_ALLOWREALLOC,&wProps,NULL,&(LPBYTE)pBuff,&dwRecSize);

    pRecord=(PCEPROPVAL)pBuff;

    for(int i=0;i<wProps;i++)

    {

    //以本人程序例子,wProps=4,4个属性 输出的顺序与写入注册表时一样

    //如果某条记录写入的时候是:姓名、号码、内容、时间,则输出这条记录的时候是:姓名、号码、内容、时间

    //如果某条记录写入的时候是:时间、号码、姓名、内容,则输出这条记录的时候是:时间、号码、姓名、内容

    //在同一个数据库中,可以混着用任意顺序

    }

    4:返回数据库记录数

    CEOIDINFO oidInfo;

    if (!CeOidGetInfoEx(&m_ceGuid,m_ceOid,&oidInfo))

    {

    TRACE(_T("获取数据库记录数失败 err/n"));

    }

    现在看多么顺利的一句话,因为在if那句后面多写了个分号,折腾了小一天,悲催!

    5:记录中属性的数据类型

    所有属性均用

    CEVT_LPWSTR类型

    程序中用CString

    存储的时候转化:例 内容属性

    TCHAR content[256];

    lstrcpy(content,sm.szContent);//szContent是CString类型

    pProps->val.lpwstr=content;

    输出时转为CString:pSM->szContent=pRecord->val.lpwstr;

  • 相关阅读:
    3892: [Usaco2014 Dec]Marathon
    3891: [Usaco2014 Dec]Piggy Back
    2016: [Usaco2010]Chocolate Eating
    3016: [Usaco2012 Nov]Clumsy Cows
    3359: [Usaco2004 Jan]矩形
    1593: [Usaco2008 Feb]Hotel 旅馆
    关于ubuntu上无法运行cmd markdown
    Mininet实验 动态改变转发规则
    Mininet简单性能测试
    Mininet实验 基于Mininet测量路径的损耗率
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171479.html
Copyright © 2020-2023  润新知