gpt4 book ai didi

c++ - 没有数据库连接的字符串转义

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:04 24 4
gpt4 key购买 nike

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

考虑以下代码:

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

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

它抛出我的连接断开了。如果有另一种方法可以实现这一点(希望没有数据库连接),有人可以给我一个标志吗?我是否忽略了什么?

更新:

我在 docs of libpq 中找到了一个可能的原因来解释为什么此功能可能需要事件连接。 :

The only difference from PQescapeStringConn is that PQescapeString does not take PGconn or error parameters. Because of this, it cannot adjust its behavior depending on the connection properties (such as character encoding) and therefore it might give the wrong results. Also, it has no way to report error conditions.

最佳答案

我遇到了同样的问题。我解决问题的方式如下所示。这是一个没有完全解决问题的技巧,但是,惰性部分在整个运行时执行中只执行一次,并且最小化到最大。真正的问题是 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(); }
}

关于c++ - 没有数据库连接的字符串转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com