字符串转义没有数据库连接

时间:2012-09-28 13:08:29

标签: c++ libpqxx

我正在尝试使用字符串转义功能而无法访问打开的pqxx ::连接。

请考虑以下代码:

#include <pqxx/pqxx>
#include <iostream>

int main() {
    pqxx::connection c;
    std::cout << c.quote("this is a test") << std::endl;
}

它引发我的连接被破坏了。有人可以给我一个标志,如果有另一种方法来实现这一点(希望没有数据库连接)?我忽略了什么吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 我解决问题的方法如下所示。 这是一个不能完全解决问题的技巧,但是,它的懒惰部分在整个运行时只执行一次,并且被最小化到最大。 真正的问题是 libpqxx 的编写方式。

std::string
quote(const std::string& str, const std::string& database_connection)
{
    try {
        static pqxx::lazyconnection C {database_connection};
        static bool disconnect = true;
        if(disconnect) {
            C.disconnect();
            disconnect = false;
        }
        return C.quote(str);
    } catch (const std::exception &e) { throw e.what(); }
}

答案 1 :(得分:0)

字符转义序列可以在不使用pqxx的情况下轻松使用。

std::cout << "\"This is a qoute\"" << std::endl;

'\'字符开始转义序列。对于qoutes,你只需说“

其他序列: http://en.cppreference.com/w/cpp/language/escape