Supports 'write', 'update', 'delete', and 'read' operations on series_base tables.
More...
Supports 'write', 'update', 'delete', and 'read' operations on series_base tables.
See Chapter 7 of the TSA User Guide for instructions on how to use this class.
Note that a table can only be opened successfully with a TableWriter if the table is 'writeable'. See Database::TableIsWriteable().
- Example - Appending Records
Database db("DEMO_DB", ="c:/db/", CREATE | TRUNCATE);
db.CreateSchema("ohlcv", "open:d, high:d, low:d, close:d, volume:L");
db.CreateTable("demo.series.ohlcv.daily", "ohlcv");
TableWriter writer(db, "demo.series.ohlcv.daily");
for(size_t r=1; r < 11; r++)
{
writer << r
<< (r + 1)
<< (r + 3)
<< String::ToString(r + 4);
}
writer.Close();
db.PrintTable("demo.series.ohlcv.daily", file);
- Example - Reading Records
Database db("DEMO_DB", "c:/db/", NO_CREATE);
TableWriter writer(db, "demo.series.ohlcv.daily");
writer.SetPosition(0);
do{
file << writer.GetTimestamp() << ", "
<< writer["open"] << ", "
<< writer["high"] << ", "
<< writer[2] << ", "
<< writer[3] << ", "
<< writer[4] << std::endl;
}
while( writer++ );
file << std::endl;
file << "Num Records: " << writer.GetSize() << std::endl;
file << "Num Fields: " << writer.GetFieldCount() << std::endl;
file << "First Field Name: " << writer.GetFieldName(0) << std::endl;
file << "Last Field Name: " << writer.GetFieldName(writer.GetFieldCount() - 1) << std::endl;
- Example - Updating Records
Database db("DEMO_DB", "c:/db/", NO_CREATE);
TableWriter writer(db, "demo.series.ohlcv.daily");
std::vector<Variant> record;
writer.SetPosition(0);
do{
writer.Read(record);
record[0] = (double)record[0] * 10000;
record[1] = 99999;
record[2] = (int)record[1] + 1;
record[3] = Variant();
record[4] = Variant();
writer.Update(record);
}
while(writer++);
writer.Close();
db.PrintTable("demo.series.ohlcv.daily", file);