Symbian OS 应用开发实例之通讯录(电话薄Contacts)
2010-08-11 12:12:00 来源:WEB开发网例1、 打开和关闭数据库
CContactDatabase::OpenL()函数有两个重载函数。如果该函数没有给出一个参数,就打开默认的数据库。另一种情况是,应用软件设计师也可以传递一个有关数据库的路径和文件名,规定打开一个指定数据库。
//打开默认数据库
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
//取得当前数据库所有通讯条目数
TInt numberOfContacts = contactsDb->CountL();
//释放数据库
CleanupStack::PopAndDestroy(contactsDb);
要注意的是:某个通信录数据库并不具有Close()函数或类似的函数,否则我们压入清除栈时就得用 CleanupClosePushL()函数了。
例2、 创建数据库
CContactDatabase::CreateL() 函数与CContactDatabase::ReplaceL()函数之间的唯一差别就是:如果该数据库已经存在,前者会以 KErrAlreadyExists退出。如前所述,如果没有定义参数,这些函数将创建一个默认的数据库。 CContactDatabase::FindContactFile()函数给出了一个描述符,如果不存在默认数据库的话,该描述符就会返回该默认数据库的位置。
// If one is found, replace it with a new empty default database.
// If no default database is found, create a new one.
TFileName contactDbFilePath;
CContactDatabase* newDefaultContactDb;
//是否存在默认数据库
if(CContactDatabase::FindContactFile(contactDbFilePath))
{
newDefaultContactDb = CContactDatabase::ReplaceL();
}
else
{
newDefaultContactDb = CContactDatabase::CreateL();
}
CleanupStack::PushL(newDefaultContactDb);
// 添加自己功能代码
CleanupStack::PopAndDestroy(newDefaultContactDb);
注:以上代码负责创建一个空的默认数据库。
例3、 读取(遍历)通讯录条目
可以用TContactIter类(该类起到数据库操作中类似游标的作用)来遍历一个通信录数据库。这个类提供了一整套的函数,用于遍历所有的通信录项。所有的函数都用通信录项ID (TContactItemId) 进行操作,该ID 用于访问某个特定的通信录项。
更多精彩
赞助商链接