本文整理汇总了C++中Db::truncate方法的典型用法代码示例。如果您正苦于以下问题:C++ Db::truncate方法的具体用法?C++ Db::truncate怎么用?C++ Db::truncate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Db
的用法示例。
在下文中一共展示了Db::truncate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Truncate
int DiskBDB::Truncate ( const Vdt *dzname )
{
int ret = -1;
int numPartition = 0;
DbTxn* txn = NULL;
Db *DbHandle;
numPartition = m_dzManager->GetNumPartition( *dzname );
string s_dzname = "";
uint num_deleted = 0;
const char **pathArray;
m_DiskEnv->get_data_dirs(&pathArray);
string s_datadir_init = pathArray[0];
string s_datadir, s_pathFile;
TCUtility::fixDataDirectoryPath( s_datadir_init, s_datadir );
for( int i = 0; i < numPartition; i++ )
{
//txn = NULL;
//m_DiskEnv->txn_begin(NULL, &txn, 0);
s_pathFile.clear();
s_dzname.clear();
//s_dzname = "";
m_dzManager->AppendPartitionID(*dzname, i, s_dzname);
s_dzname += TC_TRUCATE_DZONE_MASK;
s_pathFile = s_datadir + s_dzname;
//ret = m_dzManager->GetHandleForPartition( s_dzname.c_str(), strlen(s_dzname.c_str()), DbHandle );
//ret = m_dzManager->OpenHandleNoEnv( s_dzname.c_str(), strlen(s_dzname.c_str()), DbHandle );
ret = m_dzManager->OpenHandleNoEnv( s_pathFile.c_str(), strlen(s_pathFile.c_str())+1, DbHandle );
//handle ret!=0
//blablabla...
try
{
ret = DbHandle->truncate(NULL, &num_deleted, 0);
//ret = DbHandle->truncate( txn, &num_deleted, 0 );
//handle ret!=0
//blablabla...
//txn->commit(0);
}
catch(DbException ex)
{
ret = ex.get_errno();
cout << ex.what();
cout << ex.get_errno();
cout<<"Error. DiskBDB::Truncate-> Exception encountered while truncating DiskBDB for DZName: " << s_dzname << endl;
//txn->abort();
}
DbHandle->close(0);
}
if(ret!=0)
{
cout<<"The Handle was not retrieved from datazone manager"<<endl;
return ret;
}
return ret;
}
示例2: main
int main(int argc, char *argv[])
{
try {
Db *db = new Db(NULL, 0);
db->open(NULL, "my.db", NULL, DB_BTREE, DB_CREATE, 0644);
// populate our massive database.
// all our strings include null for convenience.
// Note we have to cast for idiomatic
// usage, since newer gcc requires it.
Dbt *keydbt = new Dbt((char*)"key", 4);
Dbt *datadbt = new Dbt((char*)"data", 5);
db->put(NULL, keydbt, datadbt, 0);
// Now, retrieve. We could use keydbt over again,
// but that wouldn't be typical in an application.
Dbt *goodkeydbt = new Dbt((char*)"key", 4);
Dbt *badkeydbt = new Dbt((char*)"badkey", 7);
Dbt *resultdbt = new Dbt();
resultdbt->set_flags(DB_DBT_MALLOC);
int ret;
if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
cout << "get: " << DbEnv::strerror(ret) << "\n";
}
else {
char *result = (char *)resultdbt->get_data();
cout << "got data: " << result << "\n";
}
if ((ret = db->get(NULL, badkeydbt, resultdbt, 0)) != 0) {
// We expect this...
cout << "get using bad key: "
<< DbEnv::strerror(ret) << "\n";
}
else {
char *result = (char *)resultdbt->get_data();
cout << "*** got data using bad key!!: "
<< result << "\n";
}
// Now, truncate and make sure that it's really gone.
cout << "truncating data...\n";
u_int32_t nrecords;
db->truncate(NULL, &nrecords, 0);
cout << "truncate returns " << nrecords << "\n";
if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
// We expect this...
cout << "after truncate get: "
<< DbEnv::strerror(ret) << "\n";
}
else {
char *result = (char *)resultdbt->get_data();
cout << "got data: " << result << "\n";
}
db->close(0);
cout << "finished test\n";
}
catch (DbException &dbe) {
cerr << "Db Exception: " << dbe.what();
}
return 0;
}