mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 09:06:25 +00:00
72 lines
1.9 KiB
C++
72 lines
1.9 KiB
C++
|
/*-
|
||
|
* See the file LICENSE for redistribution information.
|
||
|
*
|
||
|
* Copyright (c) 2004, 2011 Oracle and/or its affiliates. All rights reserved.
|
||
|
*
|
||
|
* $Id$
|
||
|
*/
|
||
|
|
||
|
#include "MyDb.hpp"
|
||
|
|
||
|
// File: MyDb.cpp
|
||
|
|
||
|
// Class constructor. Requires a path to the location
|
||
|
// where the database is located, and a database name
|
||
|
MyDb::MyDb(std::string &path, std::string &dbName,
|
||
|
bool isSecondary)
|
||
|
: db_(NULL, 0), // Instantiate Db object
|
||
|
dbFileName_(path + dbName), // Database file name
|
||
|
cFlags_(DB_CREATE) // If the database doesn't yet exist,
|
||
|
// allow it to be created.
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
// Redirect debugging information to std::cerr
|
||
|
db_.set_error_stream(&std::cerr);
|
||
|
|
||
|
// If this is a secondary database, support
|
||
|
// sorted duplicates
|
||
|
if (isSecondary)
|
||
|
db_.set_flags(DB_DUPSORT);
|
||
|
|
||
|
// Open the database
|
||
|
db_.open(NULL, dbFileName_.c_str(), NULL, DB_BTREE, cFlags_, 0);
|
||
|
}
|
||
|
// DbException is not a subclass of std::exception, so we
|
||
|
// need to catch them both.
|
||
|
catch(DbException &e)
|
||
|
{
|
||
|
std::cerr << "Error opening database: " << dbFileName_ << "\n";
|
||
|
std::cerr << e.what() << std::endl;
|
||
|
}
|
||
|
catch(std::exception &e)
|
||
|
{
|
||
|
std::cerr << "Error opening database: " << dbFileName_ << "\n";
|
||
|
std::cerr << e.what() << std::endl;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Private member used to close a database. Called from the class
|
||
|
// destructor.
|
||
|
void
|
||
|
MyDb::close()
|
||
|
{
|
||
|
// Close the db
|
||
|
try
|
||
|
{
|
||
|
db_.close(0);
|
||
|
std::cout << "Database " << dbFileName_
|
||
|
<< " is closed." << std::endl;
|
||
|
}
|
||
|
catch(DbException &e)
|
||
|
{
|
||
|
std::cerr << "Error closing database: " << dbFileName_ << "\n";
|
||
|
std::cerr << e.what() << std::endl;
|
||
|
}
|
||
|
catch(std::exception &e)
|
||
|
{
|
||
|
std::cerr << "Error closing database: " << dbFileName_ << "\n";
|
||
|
std::cerr << e.what() << std::endl;
|
||
|
}
|
||
|
}
|