10 env = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::OBJECT);
11 char *c_user = std::getenv(
"CONDBON_AUTH_USER");
12 char *c_pass = std::getenv(
"CONDBON_AUTH_PASSWORD");
18 std::cout <<
"Connection to Online DB is done." << std::endl;
24 env->terminateConnection(
con);
25 oracle::occi::Environment::terminateEnvironment(
env);
32 int rec_id = 0, map_id = 0, map_index = 0;
37 tab_map = obj_name +
"_map";
38 tab_data = obj_name +
"_data";
39 if (obj_name ==
"test") {
41 tab_map =
"gains_map";
42 tab_data =
"gains_data";
46 oracle::occi::ResultSet *rset;
48 sqlStmt =
"SELECT max(record_id) from " + tab;
49 stmt->setSQL(sqlStmt);
50 rset =
stmt->executeQuery();
52 while (rset->next()) {
53 rec_id = rset->getInt(1);
61 stmt->closeResultSet(rset);
64 sqlStmt =
"INSERT INTO " + tab +
" VALUES (:1, :2, :3, :4, :5, null)";
65 stmt->setSQL(sqlStmt);
67 curtime = *localtime(&
now);
70 stmt->setInt(2, global_run);
87 std::map<std::string, int> month;
102 st = data_time.substr(8, 2);
103 int mday = atoi(st.c_str());
104 st = data_time.substr(20, 4);
105 int year = atoi(st.c_str());
106 st = data_time.substr(11, 2);
107 int hour = atoi(st.c_str());
108 st = data_time.substr(14, 2);
109 int min = atoi(st.c_str());
110 st = data_time.substr(17, 2);
111 int sec = atoi(st.c_str());
113 stmt->setDate(3, edate);
114 oracle::occi::Date edate_c(
env,
115 curtime.tm_year + 1900,
121 stmt->setDate(4, edate_c);
122 if (obj_name !=
"test")
123 stmt->executeUpdate();
124 }
catch (oracle::occi::SQLException &ex) {
125 std::cout <<
"Exception thrown for insertBind" << std::endl;
126 std::cout <<
"Error number: " << ex.getErrorCode() << std::endl;
127 #if defined(_GLIBCXX_USE_CXX11_ABI) && (_GLIBCXX_USE_CXX11_ABI == 0) 128 std::cout << ex.getMessage() << std::endl;
133 sqlStmt =
"SELECT max(map_id) from " + tab_map;
134 stmt->setSQL(sqlStmt);
135 rset =
stmt->executeQuery();
137 while (rset->next()) {
138 map_id = rset->getInt(1);
146 stmt->closeResultSet(rset);
148 std::ostringstream
ss;
151 sqlStmt =
"SELECT max(map_index) from " + tab_map +
" where record_id=" +
ss.str();
153 stmt->setSQL(sqlStmt);
154 rset =
stmt->executeQuery();
156 while (rset->next()) {
157 map_index = rset->getInt(1);
165 stmt->closeResultSet(rset);
167 sqlStmt =
"INSERT INTO " + tab_map +
" VALUES (:1, :2, :3, :4)";
168 stmt->setSQL(sqlStmt);
170 std::map<int, std::vector<std::vector<float> > >::const_iterator itm;
171 itm =
obj->obj.begin();
172 int sizeint = itm->second[0].size();
173 sqlStmt1 =
"INSERT INTO " + tab_data +
" VALUES (:1, :2";
174 for (
i = 1;
i < sizeint + 1; ++
i) {
176 sqlStmt1 = sqlStmt1 +
", :" +
ss.str();
179 sqlStmt1 = sqlStmt1 +
")";
181 sb4 si =
sizeof(
int);
182 sb4 sf =
sizeof(
float);
185 int c1[200], c2[200];
187 for (
i = 0;
i < 200; ++
i) {
193 stmt1->setSQL(sqlStmt1);
195 for (itm =
obj->obj.begin(); itm !=
obj->obj.end(); ++itm) {
196 int id_det = itm->first;
197 int sizev =
obj->obj[id_det].size();
200 map_index = map_index + 1;
202 stmt->setInt(1, map_id);
204 stmt->setInt(3, map_index);
205 stmt->setInt(4, id_det);
206 if (obj_name !=
"test")
207 stmt->executeUpdate();
216 for (
i = 0;
i < sizev; ++
i) {
217 int sizei =
obj->obj[id_det][
i].size();
218 if (sizei != sizeint) {
219 std::cout <<
"Inconsistent object - dimention of internal vector is not " << sizeint << std::endl;
225 for (
j = 0;
j < sizei; ++
j) {
230 stmt1->setDataBuffer(1,
c1, oracle::occi::OCCIINT, si, &elensi[0]);
231 stmt1->setDataBuffer(2, c2, oracle::occi::OCCIINT, si, &elensi[0]);
232 for (
j = 0;
j < sizeint; ++
j) {
233 stmt1->setDataBuffer(
j + 3,
c[
j], oracle::occi::OCCIFLOAT, sf, &elensf[0]);
235 if (obj_name !=
"test")
236 stmt1->executeArrayUpdate(sizev);
251 sqlStmt =
"SELECT max(record_id) from " + obj_name;
253 stmt->setSQL(sqlStmt);
254 oracle::occi::ResultSet *rset;
255 rset =
stmt->executeQuery();
257 while (rset->next()) {
258 *
record = rset->getInt(1);
271 int map_id = 0, layer_id = 0;
274 tab_map = obj_name +
"_map";
275 tab_data = obj_name +
"_data";
282 oracle::occi::ResultSet *rset, *rset1;
283 std::ostringstream
ss;
286 const char *
p = tab_data.c_str();
287 len = tab_data.length();
288 for (
i = 0;
i < len; ++
i) {
289 d = toupper(*(
p +
i));
292 sqlStmt =
"SELECT count(column_name) from user_tab_columns where table_name='" +
ss.str() +
"'";
294 stmt->setSQL(sqlStmt);
295 rset =
stmt->executeQuery();
297 while (rset->next()) {
298 num_var = rset->getInt(1) - 2;
306 stmt->closeResultSet(rset);
310 sqlStmt =
"SELECT map_id,map_index,layer_id from " + tab_map +
" where record_id=" +
ss.str() +
" order by map_index";
312 stmt->setSQL(sqlStmt);
313 rset =
stmt->executeQuery();
315 while (rset->next()) {
316 map_id = rset->getInt(1);
318 layer_id = rset->getInt(3);
320 sqlStmt1 =
"SELECT * from " + tab_data +
" where map_id=" +
ss.str() +
" order by vec_index";
322 stmt1->setSQL(sqlStmt1);
323 rset1 =
stmt1->executeQuery();
325 while (rset1->next()) {
326 vec_index = rset1->getInt(2);
327 obj->obj[layer_id].resize(vec_index);
328 for (
i = 0;
i < num_var; ++
i) {
329 obj->obj[layer_id][vec_index - 1].push_back(rset1->getFloat(3 +
i));
condbon() noexcept(false)
oracle::occi::Statement * stmt
void cdbon_last_record(std::string obj_name, int *record)
void cdbon_write(CSCobject *obj, std::string obj_name, int record, int global_run, std::string time)
oracle::occi::Connection * con
oracle::occi::Environment * env
~condbon() noexcept(false)
oracle::occi::Statement * stmt1
void cdbon_read_rec(std::string obj_name, int record, CSCobject *obj)