Ignore:
Timestamp:
2010-05-06T12:49:54+12:00 (14 years ago)
Author:
davidb
Message:

Upgrading of database backends to allow support for sql-query support. Opportunity also taken to make calls to sql related classes (such as mssql and sqlite) to be more unified.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/common-src/src/lib/sqlitedbclass.cpp

    r21865 r22043  
    3838
    3939#define SQLITE_MAX_RETRIES 8
     40
     41sqlitedbclass::sqlitedbclass()
     42{
     43  sqlitefile = NULL;
     44}
    4045
    4146
     
    95100void sqlitedbclass::deletekey (const text_t &key)
    96101{
    97   text_t sql_cmd = "DELETE FROM data WHERE key='" + sqlite_safe(key) + "'";
     102  text_t sql_cmd = "DELETE FROM data WHERE key='" + sql_safe(key) + "'";
    98103  sqlexec(sql_cmd);
    99104}
     
    114119
    115120  // Get the entries in the "document_metadata" table where the element and value matches those specified
    116   text_t sql_cmd = "SELECT DISTINCT docOID FROM document_metadata WHERE element IN ('" + sqlite_safe(metadata_element_names[0]) + "'";
     121  text_t sql_cmd = "SELECT DISTINCT docOID FROM document_metadata WHERE element IN ('" + sql_safe(metadata_element_names[0]) + "'";
    117122  for (int i = 1; i < metadata_element_names.size(); i++)
    118123  {
    119     sql_cmd += ",'" + sqlite_safe(metadata_element_names[i]) + "'";
    120   }
    121   sql_cmd += ") AND value='" + sqlite_safe(metadata_value) + "'";
     124    sql_cmd += ",'" + sql_safe(metadata_element_names[i]) + "'";
     125  }
     126  sql_cmd += ") AND value='" + sql_safe(metadata_value) + "'";
    122127
    123128  // If we're sorting the documents by a certain metadata element, extend the SQL command to do this
    124129  if (sort_by_metadata_element_name != "")
    125130  {
    126     sql_cmd = "SELECT docOID FROM (" + sql_cmd + ") LEFT JOIN (SELECT docOID,value from document_metadata WHERE element='" + sqlite_safe(sort_by_metadata_element_name) + "') USING (docOID) ORDER by value";
     131    sql_cmd = "SELECT docOID FROM (" + sql_cmd + ") LEFT JOIN (SELECT docOID,value from document_metadata WHERE element='" + sql_safe(sort_by_metadata_element_name) + "') USING (docOID) ORDER by value";
    127132  }
    128133
     
    157162bool sqlitedbclass::getkeydata (const text_t& key, text_t &data)
    158163{
    159   text_t sql_cmd = "SELECT value FROM data WHERE key='" + sqlite_safe(key) + "'";
     164  text_t sql_cmd = "SELECT value FROM data WHERE key='" + sql_safe(key) + "'";
    160165  vector<text_tmap> sql_results;
    161166  if (!sqlgetarray(sql_cmd, sql_results) || sql_results.size() == 0)
     
    217222
    218223  // Get the entries in the "document_metadata" table where the element matches that specified
    219   text_t sql_cmd = "SELECT DISTINCT docOID," + value_select_expression + " FROM document_metadata WHERE element IN ('" + sqlite_safe(metadata_element_names[0]) + "'";
     224  text_t sql_cmd = "SELECT DISTINCT docOID," + value_select_expression + " FROM document_metadata WHERE element IN ('" + sql_safe(metadata_element_names[0]) + "'";
    220225  for (int i = 1; i < metadata_element_names.size(); i++)
    221226  {
    222     sql_cmd += ",'" + sqlite_safe(metadata_element_names[i]) + "'";
     227    sql_cmd += ",'" + sql_safe(metadata_element_names[i]) + "'";
    223228  }
    224229  sql_cmd += ")";
     
    227232  if (metadata_value_filter != "")
    228233  {
    229     sql_cmd += " AND value GLOB '" + sqlite_safe(metadata_value_filter) + "'";
     234    sql_cmd += " AND value GLOB '" + sql_safe(metadata_value_filter) + "'";
    230235  }
    231236
     
    256261  if (!exists(key))
    257262  {
    258     text_t sql_cmd = "INSERT INTO data (key, value) VALUES ('" + sqlite_safe(key) + "', '" + sqlite_safe(data) + "')";
     263    text_t sql_cmd = "INSERT INTO data (key, value) VALUES ('" + sql_safe(key) + "', '" + sql_safe(data) + "')";
    259264    return sqlexec(sql_cmd);
    260265  }
    261266  else
    262267  {
    263     text_t sql_cmd = "UPDATE data SET value='" + sqlite_safe(data) + "' WHERE key='" + sqlite_safe(key) + "'";
     268    text_t sql_cmd = "UPDATE data SET value='" + sql_safe(data) + "' WHERE key='" + sql_safe(key) + "'";
    264269    return sqlexec(sql_cmd);
    265270  }
     
    282287
    283288
    284 text_t sqlitedbclass::sqlite_safe (const text_t &value_arg)
     289text_t sqlitedbclass::sql_safe (const text_t &value_arg)
    285290{
    286291  text_t value = value_arg;
     
    380385bool sqlitedbclass::sqltableexists(const text_t &table_name)
    381386{
    382   text_t sql_cmd = "SELECT * FROM sqlite_master WHERE tbl_name='" + sqlite_safe(table_name) + "'";
     387  text_t sql_cmd = "SELECT * FROM sqlite_master WHERE tbl_name='" + sql_safe(table_name) + "'";
    383388  vector<text_tmap> sql_results;
    384389  if (!sqlgetarray(sql_cmd, sql_results) || sql_results.size() == 0)
Note: See TracChangeset for help on using the changeset viewer.