Browse Source

add replace into

ithewei 6 years ago
parent
commit
e18b6b6b20
4 changed files with 26 additions and 0 deletions
  1. 6 0
      sqlite/db.cpp
  2. 1 0
      sqlite/db.h
  3. 17 0
      sqlite/sql.cpp
  4. 2 0
      sqlite/sql.h

+ 6 - 0
sqlite/db.cpp

@@ -100,6 +100,12 @@ int dbtable_insert(HDB hdb, const char* table_name, const char* keys, const char
     return db_exec(hdb, sql.c_str());
 }
 
+int dbtable_replace(HDB hdb, const char* table_name, const char* keys, const char* values) {
+    std::string sql;
+    sql_replace(sql, table_name, keys, values);
+    return db_exec(hdb, sql.c_str());
+}
+
 int dbtable_update(HDB hdb, const char* table_name, const char* set, const char* where) {
     std::string sql;
     sql_update(sql, table_name, set, where);

+ 1 - 0
sqlite/db.h

@@ -29,6 +29,7 @@ int dbtable_exist(HDB hdb, const char* table_name);
 int dbtable_count(HDB hdb, const char* table_name, const char* where);
 int dbtable_select(HDB hdb, const char* table_name, const char* keys, const char* where, DBTable* table, const KeyVal* options=NULL);
 int dbtable_insert(HDB hdb, const char* table_name, const char* keys, const char* values);
+int dbtable_replace(HDB hdb, const char* table_name, const char* keys, const char* values);
 int dbtable_update(HDB hdb, const char* table_name, const char* set, const char* where);
 int dbtable_delete(HDB hdb, const char* table_name, const char* where);
 

+ 17 - 0
sqlite/sql.cpp

@@ -52,6 +52,23 @@ void sql_insert(std::string& sql, const char* table_name, const char* keys, cons
     }
     sql += ';';
 }
+// replace into $table_name ($keys) values ($values);
+void sql_replace(std::string& sql, const char* table_name, const char* keys, const char* values) {
+    sql = "replace into ";
+    sql += table_name;
+    if (keys) {
+        sql += " (";
+        sql += keys;
+        sql += ')';
+    }
+    if (values) {
+        sql += " values ";
+        sql += '(';
+        sql += values;
+        sql += ')';
+    }
+    sql += ';';
+}
 // update $table_name set $set where $where;
 void sql_update(std::string& sql, const char* table_name, const char* set, const char* where) {
     sql = "update ";

+ 2 - 0
sqlite/sql.h

@@ -11,6 +11,8 @@ void sql_count(std::string& sql, const char* table_name, const char* where = NUL
 void sql_select(std::string& sql, const char* table_name, const char* keys = "*", const char* where = NULL, const KeyVal* options = NULL);
 // insert into $table_name ($keys) values ($values);
 void sql_insert(std::string& sql, const char* table_name, const char* keys, const char* values);
+// replace into $table_name ($keys) values ($values);
+void sql_replace(std::string& sql, const char* table_name, const char* keys, const char* values);
 // update $table_name set $set where $where;
 void sql_update(std::string& sql, const char* table_name, const char* set, const char* where = NULL);
 // delete from $table_name where $where;