问题标签 [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 回答
130 浏览

postgresql - 使用带有 PL/pgSQL 的 soci 进行变量绑定

我正在使用 SOCI 库在 Oracle 和 PostgreSQL 数据库上执行数据库查询。我得到以下信息error

无法执行查询。致命错误。错误:绑定消息提供 1 个参数,但准备好的语句“”需要 0”

当我绑定一个变量并执行以下 PL/pgSQL 时。但 Oracle 变体工作正常。

我尝试了按位置和按名称进行变量绑定。对 PL/pgSQL 脚本没有任何作用。如果我用一个值替换变量,脚本就可以工作。有什么想法吗?

这个例子可能不适合这个问题。但是想想如果我使用if带变量的条件

0 投票
1 回答
185 浏览

c++ - 无法使用 soci 库连接到 SQL Server

我是 C++ 的初学者,我在 Linux 上使用 soci 库连接 SQL Server 的问题,我的代码是这个,但我有错误,我没有找到解决我的问题的方法,我的代码是:

我有错误:

这是代码:

0 投票
1 回答
114 浏览

c++ - wxWidgets 应用程序中的 SOCI 数据类型

我已经启动了一个新的简单 wxWidgets 应用程序,然后使用 SOCI 添加了对 firebird 数据库访问的支持。我想知道是否可以使用像wxString和这样的数据类型,wxDateTime因为我已经用它们设计了我的表结构。

TIA。

0 投票
0 回答
76 浏览

wxwidgets - 是否可以扩展 soci 并使用 wxVector 而不是 vector 进行批量操作?

是否可以扩展 soci 数据库库并使用wxVector而不是std::vector批量操作?

我知道如何扩展基本数据类型,但对于批量操作,我不知道。

0 投票
1 回答
77 浏览

firebird - SOCI Firebird 后端的 select 语句返回的行的限制是多少?

使用 SOCI Firebird v4.0 主干从 Firebird 数据库读取/写入数据。

问题是,当我通过 select 语句从超过 200 万行的表中选择所有行时,SOCI 抛出std::bad_alloc异常,我只得到1024 * 1024行的值,即:1048576

我不知道 SOCI 是否有限制,或者我在这里缺少其他东西!

顺便说一句,我将行存储在std::vector.

0 投票
2 回答
603 浏览

c++ - 如何在 Windows 10 上正确安装 SOCI c++ 库?

我想用 C++ 做数据库编码。我的工具箱中应该有哪些现代 C++ 库?表明 SOCI 是一个很好的跨平台免费库。但是 SOCI 的安装是一个大问题,因为我找不到好的博客、教程或文章或任何提供详细说明的东西。我按照 SOCI 官方页面http://soci.sourceforge.net/doc/3.2/installation.html上的说明进行操作,但在成功之后(有点因为它没有检测到 boost。所以我不得不在没有 boost 的情况下运行它)运行 cmake ,当我在 Visual Studio 中构建 .sln 时,它给了我 4 个错误。我尝试了几天,但似乎没有任何效果。yt 上只有一个视频https://www.youtube.com/watch?v=gFGLKaDnwmI,但它显示了一种方法,即您必须操作 lib 文件中的 micros。我不想那样做。而且由于我认为这是一个著名且受欢迎的库,因此我不必这样做。无论如何,构建 o/p 太大,所以我发布了我得到的错误。第一个出现了 3 次。所以,这就是为什么我认为我在最终结果中获得了 4 失败。

我还有一个不重要的问题,但仅供参考(不要为此标记我。如果你愿意,我会删除它)。数据库编程不是经常用 C++ 完成吗?或者如果完成,c++ 编码人员是否更喜欢 C api 而不是 c++ 的?因为,我很难找到最近的好文章或博客。

0 投票
1 回答
451 浏览

c++ - 使用 SOCI C++ 在 PostgreSQL 中设置自动提交

这是一个答案,而不是我需要在SO中说明的问题。我一直在为这个问题(“如何在将 soci 库与 PostgreSQL 数据库一起使用时关闭自动提交”)苦苦挣扎,并想出了几个解决方案。

在 Oracle 中,默认情况下自动提交选项是关闭的,我们必须soci::session::commit显式调用以提交我们所做的事务,但在 PostgreSQL 中这是另一种方式,它会在我们执行 sql 语句时立即提交(纠正我,如果我错了)。这将在我们独立编写应用程序数据库时引入问题。soci 库提供soci::transaction了为了解决这个问题。

soci::transaction因此,当我们通过提供to 来初始化 a 时soci::session,它将保存我们所做的事务而不提交到数据库。最后,当我们调用soci::transaction::commit它时,它会将更改提交到数据库。

但是,执行commitrollback将结束事务tr,我们需要初始化另一个soci::transaction以保存我们即将进行的未来事务(创建一个活跃的进行中的事务)。这里有更多有趣的事实soci::transaction

  1. soci::transaction每个soci::session. _ 如果您初始化另一个,第二个将替换第一个。
  2. 您不能执行多于一个commitrollback使用一个soci::transaction. 在您第二次提交或回滚时,您将收到一个异常。
  3. 您可以初始化 a transaction,然后使用session::commitor session::rollback。它将给出与transaction::commitor相同的结果transaction::rollback。但是,只要您像往常一样执行单次提交或回滚,事务就会结束​​。
  4. 对象对您的范围(执行 sql 并调用提交或回滚的地方)的可见性无关紧要soci::transaction,以便保留您所做的数据库事务,直到显式提交或回滚。换句话说,如果 a 有一个transaction正在进行的活动session,则 db 事务将一直保持,直到我们明确提交或回滚。
  5. 但是,如果为transaction它创建的实例的生命周期session结束,我们不能期望数据库事务会停止。
  6. 如果您每个人都遭受“警告:没有正在进行的事务”,您必须仅使用soci::transaction::commitor执行提交或回滚soci::transaction::rollback

现在我将发布我想出的解决方案,以便使用任何数据库后端启用显式提交或回滚。

0 投票
0 回答
147 浏览

c++ - 使用 MySQL 和 SOCI C++ 库从 docker 容器访问远程数据库

我有一些 C++ 代码连接到远程数据库以获取一些数据。

但是现在我试图让整个系统在 docker 容器中工作,但我遇到了问题,特别是因为我对连接、网络通信等不太了解。

我基本上有一个“connectionString”,其中包含所有信息、主机、端口、用户、密码等。主机地址就像 example.host.adress,当我执行它时,我收到这个错误:

错误:无法连接到“example.host.adress”上的 MySQL 服务器 (110)

我已经在使用 apt-get 和 docker 时遇到了问题,我设法用这个解决方案解决了这个问题:https : //stackoverflow.com/a/51089399/3848742(16.04 修复)。

但现在我遇到了这个问题,我读过一些有类似问题的人,但我无法让它工作,有谁知道是否有可能执行这种事情,如果可以,我能做些什么来修理它?

非常感谢您的时间

0 投票
1 回答
140 浏览

c++ - 如何获取 soci::rowset在sql查询中

我有一个列名和年龄的表。

我试图把所有的名字都写成

但是我的程序在 std::copy 处崩溃。似乎容器(源和目标)对于 std::copy 都不相同。我们可以使用 ORM 做到这一点,如何?

0 投票
0 回答
203 浏览

c++ - 使用 SQLite3 作为后端时,为什么 SOCI 数据库类型 REAL 是 std::string?

我正在使用 SQLite3 后端在 C++ SOCI 库中尝试对象关系映射。但是,当我尝试从数据库REAL值加载为 C++ 的 double 时,std::bad_cast就会抛出异常。

完整代码:

当我运行代码时,我看到std::bad_cast行中抛出的异常:

尽管在数据库中它是REAL类型。当我将行更改为:

我正在使用 SOCI-4.0.0,但以前的版本 3.2.3 也有同样的问题,我在 Windows 7 和 MinGW 编译器 7.3.0 上使用 SQLite3