问题标签 [soci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
133 浏览

c++ - 使用 soci 3.2.3 而不是 3.2.2 的链接错误

我有一个使用 soci 进行数据库访问的项目。该项目最初是使用 soci 3.2.2 开发的。现在我切换到 soci 3.2.3 并收到以下链接器错误消息:

我在 Windows 机器上使用 Visual Studio 2010。有人知道可能是什么问题吗?

最好的

0 投票
2 回答
956 浏览

c++ - soci中如何提供占位符对应的值?

我正在使用社会 3.2.2。我正在寻找一种方法来提供多个占位符和相应的值。

假设我的表有很多列。例如 field1, field2, ... 占位符 :f1 和 :f2 对应于 filed1 和 field2。占位符的数量动态变化。所以我创建了动态包含占位符的查询字符串。这是一个简单的字符串操作。到现在为止还挺好。但是,我找不到提供与占位符相对应的多个值的方法。use(vs[0]), use(vs[1]), ... 不是字符串而是 C++ 代码。所以我不能在运行时生成它。

我找到了解决它的方法,但它并不优雅。方法是放弃使用函数 use() 并直接使用字符串操作插入实际值,例如“key1”。这不安全。我需要实施以避免 SQL 注入。它是通过 use() 函数实现的。

我正在寻找更好的方法。

更新

解决方案1 ​​使用Core接口

感谢以下评论: https ://github.com/SOCI/soci/issues/354#issuecomment-115658512 https://github.com/SOCI/soci/issues/354#issuecomment-115662758

该问题已使用“核心”界面解决。

http://soci.sourceforge.net/doc/3.2/interfaces.html

这是使用“核心”接口的代码:

解决方案2 定义自定义映射

std::vector 由 soci 库保留。我需要定义不同的类型。MyVectorOfStrings 就是这样。然后使用 type_conversion 类模板特化定义自定义转换。

0 投票
2 回答
84 浏览

c++ - SOCI,pgsql 函数返回表记录 - type_conversion 不起作用

我有一个 pgsql 函数声明为:

它从 auth.sessions 表中返回一条记录。我有一个 SOCI type_conversion 在我运行时运行良好select * from auth.sessions where id = :id。它在找到匹配记录并且结果为 NULL 时起作用。但是,当我将语句更改为:

我得到例外:

执行“select * from auth.read_session('invalid')”时,此类型不允许空值。

我尝试列出列、传递 soci::indicator 等。我无法让它工作。异常来自基本 type_conversion<>。

在 type-conversion-traits.h 中有一条评论指出:

// 默认特征类 type_conversion,作为 row::get() 的传递 // 当不需要实际转换时。

为什么不需要转换?是的,我的函数返回表类型“auth.sessions”的记录。它是否应该返回 RECORD 以便启动转换?

0 投票
0 回答
126 浏览

c++ - 数字(10)到/从 SOCI/Oracle 中的 int 转换

我在尝试在 Oracle DB 的 NUMBER(10) 数据类型和 int(soci::dt_integer) 之间转换时遇到问题。问题是整数范围在 NUMBER(10) 之内,尽管 NUMBER(10) 实际上是 dt_long_long。

当我尝试使用 soci 类型转换 [ values.get<int>()] 转换值时,当列类型为 NUMBER(10) 时会出现异常。如果我将其更改为values.get<long long>()无法对 NUMBER(6 个左右) 类型进行数据写入。

直接调用 soci session 语句时,这些转换工作正常。但是当我尝试为类尝试自定义类型转换时它不起作用。

当我尝试读取列数据类型时,会抛出一个 soci_error "Rowset is empty"。有没有人遇到过这个问题?

谢谢。

0 投票
1 回答
1101 浏览

c++ - 如何避免 SOCI 错误:获取空值且未定义指标

当我的应用程序使用 SOCI 从 Oracle 获取数据时,我收到“错误:已获取空值且未定义指示符”。

我怎样才能避免它?

0 投票
2 回答
1349 浏览

c++ - 如何使用 PostgreSQL 构建 SOCI?

我正在尝试构建 SOCI 库以与 PostgreSQL 一起运行。我按照以下步骤操作:

  • 在 Ubutu 15.10 中安装 PostgreSQL
  • 下载 SOCI 源代码
  • 提取 SOCI 代码

然后我运行以下命令:

此时,CMake 给出了以下警告:

坚持构建,然后我运行make,它失败并出现以下错误:

知道 CMake 警告和构建错误的原因可能是什么吗?

0 投票
1 回答
1240 浏览

c++ - 需要帮助通过 Soci 连接 MSSQL

今天想创建一个 C++ 应用,连接到 MS SQL 服务器并执行检索记录和执行 SPROC 等功能,然后我发现了这个Soci,一个 C++ 库,可以帮助我们的应用与 DB 对话,我也发现没有MSSQL 的 Soci 中的特定后端选项与 Oracle 和其他的不同,看起来,我们只能通过 ODBC 与 mssql 对话。但是,我一直在寻找合适的文档/手册/参考资料,它会给我一个通过 连接到 MSSQL 的分步说明soci,我在 Soci 的母网站上闲逛,但我找不到任何有关 MSSQL 的信息。(我看过这个

backend_factory const& backEnd = odbc; session sql(backEnd, "filedsn=c:\\my.dsn");

但是,我的数据库托管在单独的服务器中,因此,如果有人能对此有所了解,那就太棒了:)

0 投票
0 回答
964 浏览

c++ - 与 soci-postgresql 链接错误

我按照以下步骤使用 postgresql 构建 soci 并使用 soci 构建我的应用程序。

1) 从 git 签出代码到目录 /home/sujith/soci/src

2)cmake完成

3) 制作 4) 构建我的代码

请帮助我找到链接错误。

据我了解,我已经链接了所有必需的库。

0 投票
1 回答
221 浏览

c++ - soci::i_ok 和 soci::i_null 之间的区别

我找不到对 soci::i_ok 和 soci::i_null 常量的解释。它们在本页中被提及为可能的数据状态,但未定义其确切含义。

我想知道 soci::i_ok 是否为真是否意味着数据不为空?

0 投票
0 回答
634 浏览

c++ - SOCI 批量插入 using 语句

我在 cpp 中与 SOCI 合作

这里 use() 中的所有变量都是批量输入的向量。

在使用

该语句已执行,但分配的内存从未释放。

我有一个大约 1TB 的大文件,在执行这个文件时,我总是会出现内存溢出。有什么办法可以清除 sql.execute() 完成的内存分配。

现在我已经通过使用解决了

但是因为我必须多次使用上述语句,我宁愿使用 statement.execute()