#include "KVConfig.h"
#ifdef WITH_RSQLITE
#include "SQLiteDB.h"
void create_database()
{
assignees["name"] = "Sammy";
assignees.insert_single_row();
assignees["name"] = "Jo";
assignees.insert_single_row();
assignees["name"] = "Charlie";
assignees.insert_single_row();
assignees["name"] = "Ashley";
assignees.insert_single_row();
lists["title"] = "Work";
lists["title"] = "Home";
lists["title"] = "Study";
items["list_id"] = 1;
items["content"] = "Morning meeting";
items.insert_single_row();
items.prepare_insert_single_row();
items["list_id"] = 2;
items["content"] = "Buy fruit";
items.insert_single_row();
items.prepare_insert_single_row();
items["list_id"] = 2;
items["content"] = "Cook dinner";
items.insert_single_row();
items.prepare_insert_single_row();
items["list_id"] = 3;
items["content"] = "Learn C++";
items.insert_single_row();
items.prepare_insert_single_row();
items["list_id"] = 3;
items["content"] = "Learn SQLite";
items.insert_single_row();
artists["ArtistName"] = "David Bowie";
artists.insert_single_row();
artists["ArtistName"] = "Kraftwerk";
artists.insert_single_row();
artists["ArtistName"] = "Rod Stewart";
artists.insert_single_row();
albums["AlbumTitle"] = "Hunky Dory";
albums["Year"] = 1971;
albums["artist_id"] = 1;
albums.insert_single_row();
albums["AlbumTitle"] = "Every Picture Tells A Story";
albums["Year"] = 1971;
albums["artist_id"] = 3;
albums.insert_single_row();
albums["AlbumTitle"] = "Autobahn";
albums["Year"] = 1974;
albums["artist_id"] = 2;
albums.insert_single_row();
tracks.prepare_insert_single_row();
tracks[
"SongTitle"] =
"The Bewlay Brothers";
tracks[
"SongTitle"] =
"Maggie May";
tracks[
"SongTitle"] =
"Mitternacht";
tracks[
"SongTitle"] =
"Life On Mars";
tracks[
"SongTitle"] =
"Mandolin Wind";
tracks[
"SongTitle"] =
"Changes";
db.
print_selected_data(
"artists,tracks,albums",
"ArtistName,AlbumTitle,SongTitle",
"Year > 1972");
}
void use_database()
{
std::cerr << "Create the database first by calling create_database()!\n";
return;
}
db.show_tables();
db.print_selected_data("assignees");
db.print_selected_data("lists");
db.print_selected_data("items");
db.print_selected_data("lists,items", "title,content");
db.print_selected_data("artists,tracks,albums", "ArtistName,Year,SongTitle", "AlbumTitle = 'Hunky Dory'");
db["artists"].prepare_insert_single_row();
db["artists"]["ArtistName"] = "Brian Eno";
db["artists"].insert_single_row();
db["albums"].prepare_insert_single_row();
db["albums"]["AlbumTitle"] = "Here Come The Warm Jets";
db["albums"]["Year"] = 1974;
db["albums"]["artist_id"] = 4;
db["albums"].insert_single_row();
db["tracks"].prepare_insert_single_row();
db["tracks"]["SongTitle"] = "Baby's On Fire";
db["tracks"]["album_id"] = 4;
db["tracks"].insert_single_row();
db.print_selected_data("artists,tracks,albums", "SongTitle,AlbumTitle,ArtistName", "Year > 1972");
std::cout << "Number of results in previous query = "
<< db.count("artists,tracks,albums", "*", "Year > 1972")
<< "?\n";
db.select_data("tracks,albums,artists", "AlbumTitle,ArtistName,COUNT(*)", "", false, "GROUP BY album_id");
while (db.get_next_result()) {
std::cout <<
"The album " << db[
"albums"][
"AlbumTitle"].get_data<
TString>() <<
" by " << db[
"artists"][
"ArtistName"].get_data<TString>()
<< " contains " << db.get_count_column_value() << " tracks\n";
}
}
#endif
R__EXTERN TSystem * gSystem
column & DEFAULT(default_time t)
Interface to ROOT SQLite database backend.
table & add_table(const table &)
void insert_data_row_selected_columns()
void end_data_insertion()
bool prepare_data_insertion_selected_columns(const TString &table)
void print_selected_data(const TString &tables, const TString &columns="*", const TString &selection="", bool distinct=false, const TString &anything_else="")
Print out results of a call to select_data().
void primary_key(const TString &cols)
void foreign_key(const TString &child_key, const TString &parent_table, const TString &parent_key)
column & add_column(const KVSQLite::column &c)
void prepare_insert_single_row()
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
virtual int Unlink(const char *name)