1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#include "Interface.h"
#include <string>
#include <sstream>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
std::string intToString(int i){
std::ostringstream oss;
oss << i;
return oss.str();
}
double stringToDouble(std::string str){
double d ;
size_t found = str.find(",");
if (found <= str.size())
str.replace(found,1, ".");
d=strtod( str.c_str(),0 );
return d;
}
Row::~Row(){
for( int i=0 ; i<columns.size() ; i++)
delete columns[i];
}
ResultSet::~ResultSet(){
for( int i=0 ; i<rows.size() ; i++)
delete rows[i];
}
static int callback(void *userdata, int argc, char **argv, char **azColName){
ResultSet *resultSet = static_cast<ResultSet*> (userdata);
Row *row = new Row;
for( int i=0; i<argc; i++)
row->columns.push_back( argv[i] ? new std::string(argv[i]) : 0 );
resultSet->rows.push_back(row);
return 0;
}
std::vector<double> query(std::string dbName, std::string tableName, int sim){
sqlite3* db;
std::string sql = "SELECT * FROM " + tableName + " WHERE sim =" + intToString(sim);
char *zErrMsg = 0;
ResultSet resultSet;
std::vector<double> v;
if (sqlite3_open(dbName.c_str(), &db))
sqlite3_close(db);
if (sqlite3_exec(db, sql.c_str(), callback, &resultSet, &zErrMsg))
sqlite3_free(zErrMsg);
Row *row = resultSet.rows[0];
for (int i = 2; i <row->columns.size();i++){
std::string *col = row->columns[i];
v.push_back(stringToDouble(*col));
}
sqlite3_close(db);
return v;
}
double query(std::string dbName, std::string tableName, int sim, int time){
sqlite3* db;
std::string sql = "SELECT t" + intToString(time) + " FROM " + tableName + " WHERE sim =" + intToString(sim);
char *zErrMsg = 0;
ResultSet resultSet;
if (sqlite3_open(dbName.c_str(), &db))
sqlite3_close(db);
if (sqlite3_exec(db, sql.c_str(), callback, &resultSet, &zErrMsg))
sqlite3_free(zErrMsg);
Row *row = resultSet.rows[0];
std::string* col = row->columns[0];
double value = stringToDouble(*col);
sqlite3_close(db);
return value;
}
void main (){
std::cout << query("c:\\LeNomDeLaDB.db", "LaTable", 1,2) << std::endl;
std::vector<double> v;
v = query("c:\\LeNomDeLaDB.db", "LaTable", 1);
for (int i = 0; i < v.size(); i++)
std::cout << v[i] << std::endl;
} |