codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
//for insert key and data (main) #include <sys/types.h> #include <errno.h> #include <iostream> #include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <EnvTest.h> #include <db_cxx.h> /* include environtmenCreate class */ using std::ostream; using std::cout; using std::cerr; /*constructors for create path and database name */ EnvironmentCreate::EnvironmentCreate( std::string& pathCreate, std::string& databaseName, const char *valuePrograms_ , bool isSecondary ) :pathDbFileName_( pathCreate+databaseName ), programs_( valuePrograms_ ), databaseDBObject_(NULL,0), keySet_(NULL,0), valueSet_(NULL,0), cFlags_( DB_CREATE ) { /*exception for handle open database*/ try { /*error database,check help handle database support */ databaseDBObject_.set_error_stream( &std::cerr ); /*sort deuplicates,if this is a secondary database*/ if( isSecondary ) { databaseDBObject_.set_flags( DB_DUPSORT ); } /*open database*/ databaseDBObject_.open( NULL, pathDbFileName_.c_str( ), NULL, DB_BTREE, cFlags_, 0 ); } catch( DbException &exception ) { std::cout<<"-------------------------------------------------"<<"\n"; std::cout<<"Error open database "<<pathDbFileName_<<"\n"; std::cerr<<exception.what()<<std::endl; std::cout<<"-------------------------------------------------"<<"\n"; } catch( std::exception &exception ) { std::cout<<"-------------------------------------------------"<<"\n"; std::cout<<"Error open database "<<pathDbFileName_<<"\n"; std::cerr<<exception.what()<<std::endl; std::cout<<"-------------------------------------------------"<<"\n"; } }; /* constructor */ EnvironmentCreate::EnvironmentCreate() :databaseDBObject_(NULL,0), keySet_(NULL,0), valueSet_(NULL,0){}; /* close database memberfion define */ void EnvironmentCreate::close() { //handle close database; try { std::cout<<"-------------------------------------------------"<<"\n"; databaseDBObject_.close( 0 ); std::cout<<"Database close "<< databaseName_ <<"\n"; std::cout<<" closed() "<<std::endl; std::cout<<"-------------------------------------------------"<<"\n"; } catch( DbException &dbHandle ) { std::cout<<"-------------------------------------------------"<<"\n"; std::cerr<<" Error closing database "<< databaseName_ <<"\n"; std::cerr<< dbHandle.what() <<std::endl; std::cout<<"-------------------------------------------------"<<"\n"; } catch( std::exception &exception ) { std::cout<<"-------------------------------------------------"<<"\n"; std::cout<<"Error close databse "<<pathDbFileName_<<"\n"; std::cerr<<exception.what()<<std::endl; std::cout<<"-------------------------------------------------"<<"\n"; } } /* define insertDatabase * return ture,if can insert data */ bool EnvironmentCreate::insertDatabase( char *keyInsert, char *valueInsert, const EnvironmentCreate& environmentDatabasePathName ) { /*for handle insert data to database file */ try { /*set path name */ std::string pathSetOpen = environmentDatabasePathName.pathDbFileName_; std::cout<<"Print path name : "<<pathSetOpen<<std::endl; /* Error checking */ databaseDBObject_.set_errpfx( " Error on insertDatabase data member " ); // /* open database */ // databaseDBObject_.open(NULL, // environmentDatabasePathName.pathDbFileName_.c_str( ), // NULL, // DB_BTREE, // cFlags_, // 0644); /* * author Chatsiri.rat * * set key value length */ u_int32_t key_len = ( u_int32_t )strlen( keyInsert ); /* * author Chatsiri.rat * * set data value length */ u_int32_t value_len = ( u_int32_t )strlen( valueInsert ); /* * author Chatsiri.rat * Dbt for set key and value */ Dbt keySet_( keyInsert, key_len + 1 ); //setDbt( &keyInsert, key_len ); Dbt valueSet_( valueInsert, value_len + 1 ); /* * author Chatsiri.rat * variable for check error key exist */ int ret = databaseDBObject_.put( 0, & keySet_ , &valueSet_, DB_NOOVERWRITE ); if( ret = DB_KEYEXIST ) { databaseDBObject_.err( ret, " " ); } /* * author Chatsiri.rat * Store value */ Dbt storeValue_; ret = databaseDBObject_.get( 0, &keySet_, &storeValue_, 0 ); std::cout<<"StroeValue_ : "<<( char * )storeValue_.get_data()<<std::endl; databaseDBObject_.close(0); } catch( DbException &dbex ) { databaseDBObject_.err( dbex.get_errno(), "DB exception caught " ); } } int main() { std::string pathSet = "/home/Chatsiri.rat/databasedb/"; std::string nameSet = "database023"; EnvironmentCreate environ( pathSet, nameSet,"programs",false ); /* * author Chatsiri.rat * insert key and data in databases; */ char * valueKey = "test"; char * valueInsert = "chatsiri"; environ.insertDatabase( valueKey, valueInsert, environ); }
Private
[
?
]
Run code