Пример #1
0
// handles escape quotes
std::string pDB::sql_string(pStringRef val, bool allowNull) {
    if (!val.empty()) {
        std::string conv;
        int quotes = val.count('\'');
        // get room for doubling up the quotes
        conv.reserve(val.size()+quotes+2); // +2 is outer quotes
        conv.push_back('\'');
        for (pStringRef::iterator i = val.begin();
             i != val.end();
             ++i) {
            if (*i == '\'') {
                conv.push_back('\'');
                conv.push_back('\'');
            }
            else {
                conv.push_back(*i);
            }
        }
        conv.push_back('\'');
        return conv;
    }
    else {
        if (allowNull)
            return "NULL";
        else
            return "''";
    }
}
Пример #2
0
void pModel::sql_execute(pStringRef ref, pStringRef query) {
    char *errMsg;
    if (trace_) {
        std::cerr << "TRACE: " << query.str() << std::endl;
    }
    int rc = sqlite3_exec(db_, query.begin(), NULL, NULL, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "sqlite error in " << ref.str() << ": " << query.str()
                  << "\n" << errMsg << "\n";
        exit(1);
    }
}
Пример #3
0
void pDB::sql_execute(pStringRef query) const {
    char *errMsg;
    int rc = sqlite3_exec(db_, query.begin(), NULL, NULL, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "sqlite error: " << query.str()
                  << "\n" << errMsg << "\n";
        sqlite3_free(errMsg);
        exit(1);
    }
    else if (trace_) {
        std::cerr << "TRACE: " << query.str() << std::endl;
    }
}