wince mysql.data dll_[转]WinCE数据库之CCeDBDatabase

CCeDBDatabase类提供一系列api函数以操作WinCE下的数据库文件*.db,不过该数据库文件一般由系统自动创建于Database文件夹下面,该文件保存于内存中,仪器重启即丢失。此方式可用于数据量大且短期需要保存数据的系统。其操作具体如下所示: 1、定义数据库对象

CCeDBDatabase类提供一系列api函数以操作WinCE下的数据库文件*.db,不过该数据库文件一般由系统自动创建于Database文件夹下面,该文件保存于内存中,仪器重启即丢失。此方式可用于数据量大且短期需要保存数据的系统。其操作具体如下所示:

1、定义数据库对象:

CCeDBDatabase db;

2、创建数据库:// Create database

CCeDBProp dbprops[3] =

{

CCeDBProp(CCeDBProp::Type_String,PROP_NO,CCeDBProp::Sort_Ascending),

CCeDBProp(CCeDBProp::Type_String,PROP_Name,CCeDBProp::Sort_Ascending),

CCeDBProp(CCeDBProp::Type_UShort,PROP_Age,CCeDBProp::Sort_Ascending)

};

if(!CCeDBDatabase::Exists(_T("Student.db")))

{

db.Create(_T("Student.db"),DB_IDENT_ID,3,dbprops);

}

3、新增记录:

UpdateData(true);

if(!db.Open(_T("Student.db")))

{

MessageBox(_T("Database open Error!"));

return;

}

CCeDBProp props[3];

CCeDBRecord rec;

props[0] = CCeDBProp((LPWSTR)(LPCTSTR)m_No,PROP_NO);

props[1] = CCeDBProp((LPWSTR)(LPCTSTR)m_Name, PROP_Name);

if(db.SeekFirstEqual(props[1]))

{

MessageBox(_T("tiger"));

db.Close();

return;

}

props[2] = CCeDBProp((USHORT)m_Age,PROP_Age);

rec.AddProps(props,3);

if(!db.AddRecord(&rec))

{

MessageBox(_T("Add Record Error!"));

return;

}

db.Close();

4、编辑记录:

UpdateData(true);

if(!db.Open(_T("Student.db")))

{

MessageBox(_T("Database open Error!"));

}

CCeDBRecord rec;

CCeDBProp pProp[2];

// pProp[0]=CCeDBProp((LPWSTR)(LPCTSTR)m_No,PROP_NO);

pProp[0]=CCeDBProp((LPWSTR)(LPCTSTR)m_Name,PROP_Name);

pProp[1]=CCeDBProp((USHORT)m_Age,PROP_Age);

rec.AddProps(pProp,2);

//OK

/* CCeDBProp pProp1[1];

pProp1[0]=CCeDBProp((LPWSTR)(LPCTSTR)m_No,PROP_NO);

db.SeekFirstEqual(pProp1[0]);

db.WriteCurrRecord(&rec);*/

//修改数据OK

//

/* BOOL OldSeekNext=db.m_bAutoSeekNext;

db.m_bAutoSeekNext=true;

db.SeekFirst();

CCeDBRecord temprec;

CCeDBProp* tempProp;

CString strNO,strName;

while(db.ReadCurrRecord(&temprec))

{

tempProp=temprec.GetPropFromIdent(PROP_NO);

strNO=tempProp->GetString();

tempProp=temprec.GetPropFromIdent(PROP_Name);

strName=tempProp->GetString();

if((strNO == m_No)&&(strName == m_Name))

{

if(db.m_bEOF)

db.SeekLast();

else

db.SeekPrev();

db.WriteCurrRecord(&rec);

break;

}

}

db.m_bAutoSeekNext=OldSeekNext;*/

//定位记录

BOOL OldSeekNext=db.m_bAutoSeekNext;

db.m_bAutoSeekNext=true;

CCeDBProp AimProp[1];

AimProp[0]=CCeDBProp((LPWSTR)(LPCTSTR)m_No,PROP_NO);

if(db.SeekFirstEqual(AimProp[0]))

{

CCeDBRecord temprec;

CCeDBProp *tempProp;

CString strName;

// do

// {

db.ReadCurrRecord(&temprec);

// tempProp=temprec.GetPropFromIdent(PROP_Name);

// strName=tempProp->GetString();

// MessageBox(strName);

// if(!db.m_bEOF)

// MessageBox(_T("tiger"));

if(!db.m_bEOF)

db.SeekPrev();

db.DeleteCurrRecord();

/* if(strName == m_Name)

{

db.WriteCurrRecord(&rec);

break;

}*/

// }while(db.SeekNextEqual(AimProp[0]));

}

db.m_bAutoSeekNext=OldSeekNext;

/

db.Close();

5、删除记录:

if(!db.Open(_T("Student.db")))

{

MessageBox(_T("Database open Error!"));

}

//取得列表中选择的记录

POSITION pos=m_CtrlList.GetFirstSelectedItemPosition();

int nItem=m_CtrlList.GetNextSelectedItem(pos);

CString NO=m_CtrlList.GetItemText(nItem,0);

CCeDBProp pProp[1];

pProp[0]=CCeDBProp(NO.GetBuffer(0),PROP_NO);

db.SeekFirstEqual(pProp[0]);

CCeDBRecord rec;

db.ReadCurrRecord(&rec);

CCeDBProp* tempProp;

tempProp=rec.GetPropFromIdent(PROP_NO);

CString strNO=tempProp->GetString();

MessageBox(strNO);

/

db.DeleteCurrRecord();

db.Close();

6、遍历记录

m_CtrlList.DeleteAllItems();

if(!db.Open(_T("Student.db")))

{

MessageBox(_T("Database open Error!"));

}

CCeDBProp* pProp;

int nItem=0;

CString str;

BOOL bPrev = db.m_bAutoSeekNext;

db.m_bAutoSeekNext = TRUE;

db.SeekFirst();

CCeDBRecord rec;

while(db.ReadCurrRecord(&rec))

{

pProp=rec.GetPropFromIdent(PROP_NO);

LPWSTR strNO=pProp->GetString();

m_CtrlList.InsertItem(nItem,strNO);

pProp=rec.GetPropFromIdent(PROP_Name);

LPWSTR strName=pProp->GetString();

m_CtrlList.SetItemText(nItem,1,strName);

pProp=rec.GetPropFromIdent(PROP_Age);

USHORT Age=pProp->GetUShort();

str.Format(_T("%d"),Age);

m_CtrlList.SetItemText(nItem,2,str);

}

db.m_bAutoSeekNext = bPrev;

db.Close();

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值