]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOSQLiteTreeHandler.cpp
Big correction in Database query
[creaImageIO.git] / src2 / creaImageIOSQLiteTreeHandler.cpp
index f3d5cbb8526bc0ab0d2554042bd90a38ef1759b5..627db08f7465afd4321302687a5d527d3affee6d 100644 (file)
@@ -1,5 +1,6 @@
 #include <creaImageIOSQLiteTreeHandler.h>
 #include <creaImageIOSystem.h>
+#include <creaImageIOGimmick.h>
 #include <creaImageIOTree.h>
 
 #include "CppSQLite3.h"
@@ -12,6 +13,8 @@
 #include <boost/algorithm/string.hpp>
 using namespace crea;
 
+
+
 namespace creaImageIO
 {
   using namespace tree;
@@ -23,8 +26,7 @@ namespace creaImageIO
   {
     mDB = new CppSQLite3DB;
        mIsAdding=false;
-    GimmickMessage(1,"SQLite version : "
-                  <<std::string(mDB->SQLiteVersion())<< std::endl);
+    //GimmickMessage(1,"SQLite version : "                <<std::string(mDB->SQLiteVersion())<< std::endl);
   }
   //=============================================================
 
@@ -500,7 +502,7 @@ namespace creaImageIO
          }
       }
 
-
+       
     // Create the attributes table for Root (i.e. Tree)
     LevelDescriptor::AttributeDescriptorListType::const_iterator a;
     for (a = GetTree().GetAttributeDescriptorList(0).begin();
@@ -531,22 +533,21 @@ namespace creaImageIO
 
   //========================================================================
   /// 
-  std::string& SQLformat(std::string& str)
+  void SQLformat(std::string i_str, std::string &o_str)
   {
-    // quote must be doubled
-    boost::algorithm::replace_all(str,"'","''");
-    // Found strange strings which contained NULL char INSIDE string 
-    int i,size=str.size();
-    for (i=0;i<size;++i) 
-      {
-       if (str[i]==0) 
-         {
-           str = str.substr(0,i);
-           break;
-         }
-      }
-    //    if (i<str.size())
-    return str;
+               // quote must be doubled
+               boost::algorithm::replace_all(i_str,"'","''");
+               // Found strange strings which contained NULL char INSIDE string 
+               int i,size=i_str.size();
+               for (i=0;i<size;++i) 
+               {
+                       if (i_str[i]==0) 
+                       {
+                               i_str = i_str.substr(0,i);
+                               break;
+                         }
+               }
+               o_str = i_str;
   }
   //========================================================================
   
@@ -557,6 +558,7 @@ namespace creaImageIO
     GimmickMessage(4,"SQLAppendAttributesValues"<<std::endl);
     std::string atts="";
     std::string values="";
+       std::string out ="";
     tree::Node::AttributeMapType::iterator i;
     for (i =  n->GetAttributeMap().begin();
         i != n->GetAttributeMap().end();
@@ -568,7 +570,8 @@ namespace creaImageIO
          }
 
        atts += "'" + i->first + "'";
-       values += "'" + SQLformat(i->second) + "'"; 
+       SQLformat(i->second, out);
+       values += "'" + out + "'"; 
        atts += ",";
        values += ",";
        GimmickMessage(4,"'"<<i->first<<"' = '"<<i->second<<"'"<<std::endl);
@@ -652,6 +655,7 @@ namespace creaImageIO
        query += " WHERE PARENT_ID='" + node->GetAttribute("ID") 
          + "'";
       }
+GimmickDebugMessage(1,                                 "query : '"                         <<query                                         <<std::endl);
     CppSQLite3Query q;
     QUERYDB(query,q);