问题标签 [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.
postgresql - 使用带有 PL/pgSQL 的 soci 进行变量绑定
我正在使用 SOCI 库在 Oracle 和 PostgreSQL 数据库上执行数据库查询。我得到以下信息error
:
无法执行查询。致命错误。错误:绑定消息提供 1 个参数,但准备好的语句“”需要 0”
当我绑定一个变量并执行以下 PL/pgSQL 时。但 Oracle 变体工作正常。
我尝试了按位置和按名称进行变量绑定。对 PL/pgSQL 脚本没有任何作用。如果我用一个值替换变量,脚本就可以工作。有什么想法吗?
这个例子可能不适合这个问题。但是想想如果我使用if
带变量的条件
c++ - 无法使用 soci 库连接到 SQL Server
我是 C++ 的初学者,我在 Linux 上使用 soci 库连接 SQL Server 的问题,我的代码是这个,但我有错误,我没有找到解决我的问题的方法,我的代码是:
我有错误:
这是代码:
c++ - wxWidgets 应用程序中的 SOCI 数据类型
我已经启动了一个新的简单 wxWidgets 应用程序,然后使用 SOCI 添加了对 firebird 数据库访问的支持。我想知道是否可以使用像wxString
和这样的数据类型,wxDateTime
因为我已经用它们设计了我的表结构。
TIA。
wxwidgets - 是否可以扩展 soci 并使用 wxVector 而不是 vector 进行批量操作?
是否可以扩展 soci 数据库库并使用wxVector
而不是std::vector
批量操作?
我知道如何扩展基本数据类型,但对于批量操作,我不知道。
firebird - SOCI Firebird 后端的 select 语句返回的行的限制是多少?
使用 SOCI Firebird v4.0 主干从 Firebird 数据库读取/写入数据。
问题是,当我通过 select 语句从超过 200 万行的表中选择所有行时,SOCI 抛出std::bad_alloc
异常,我只得到1024 * 1024行的值,即:1048576
我不知道 SOCI 是否有限制,或者我在这里缺少其他东西!
顺便说一句,我将行存储在std::vector
.
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++ 的?因为,我很难找到最近的好文章或博客。
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
它时,它会将更改提交到数据库。
但是,执行commit
或rollback
将结束事务tr
,我们需要初始化另一个soci::transaction
以保存我们即将进行的未来事务(创建一个活跃的进行中的事务)。这里有更多有趣的事实soci::transaction
。
soci::transaction
每个soci::session
. _ 如果您初始化另一个,第二个将替换第一个。- 您不能执行多于一个
commit
或rollback
使用一个soci::transaction
. 在您第二次提交或回滚时,您将收到一个异常。 - 您可以初始化 a
transaction
,然后使用session::commit
orsession::rollback
。它将给出与transaction::commit
or相同的结果transaction::rollback
。但是,只要您像往常一样执行单次提交或回滚,事务就会结束。 - 对象对您的范围(执行 sql 并调用提交或回滚的地方)的可见性无关紧要
soci::transaction
,以便保留您所做的数据库事务,直到显式提交或回滚。换句话说,如果 a 有一个transaction
正在进行的活动session
,则 db 事务将一直保持,直到我们明确提交或回滚。 - 但是,如果为
transaction
它创建的实例的生命周期session
结束,我们不能期望数据库事务会停止。 - 如果您每个人都遭受“警告:没有正在进行的事务”,您必须仅使用
soci::transaction::commit
or执行提交或回滚soci::transaction::rollback
。
现在我将发布我想出的解决方案,以便使用任何数据库后端启用显式提交或回滚。
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 修复)。
但现在我遇到了这个问题,我读过一些有类似问题的人,但我无法让它工作,有谁知道是否有可能执行这种事情,如果可以,我能做些什么来修理它?
非常感谢您的时间
c++ - 如何获取 soci::rowset在sql查询中
我有一个列名和年龄的表。
我试图把所有的名字都写成
但是我的程序在 std::copy 处崩溃。似乎容器(源和目标)对于 std::copy 都不相同。我们可以使用 ORM 做到这一点,如何?
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