问题标签 [mysqlpp]

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 回答
540 浏览

blob - 将 mysqlpp::sql_blob 转换为 std::string 是否安全?

我正在从我的 MySQL 数据库中获取一些二进制数据。它以 mysqlpp::sql_blob 类型出现。

恰好这个 BLOB 是一个序列化的 Google Protobuf。我需要对其进行反序列化,以便我可以正常访问它。

这会产生编译错误,因为 ParseFromString() 不适用于 mysqlpp:sql_blob 类型:

但是,如果我强制转换,它可以编译:

这安全吗?由于 mysqlpp 文档中的这个片段,我特别担心:

“因为 C++ 字符串可以很好地处理二进制数据,您可能认为可以使用 std::string 代替 sql_blob,但当前的 String 设计通过 C 字符串转换为 std::string。结果,BLOB 数据被截断在填充 SSQLS 期间第一个嵌入的空字符。如果不完全重新设计 String 或 SSQLS 机制,就无法解决这个问题。

感谢你的协助!

0 投票
1 回答
1080 浏览

c++ - 将 mysqlpp::String 转换为 C++ int

好的,我对使用 Visual Studio 中用于连接 MySQL 数据库的 mysqlpp 库比较陌生,并且在尝试将 mysqlpp::String 类型的向量转换为 int 类型的向量时遇到了麻烦。有没有人对mysqlpp有任何经验并且介意帮助我一点?我已经发布了一个示例,说明我在下面的代码中主要尝试执行的操作。假设向量 futureItemsets 已经被填充,我只想将内容复制到一个整数向量中。感谢您的任何帮助,您可以提供!

0 投票
1 回答
418 浏览

c++ - UseQueryResult 不是 mysqlpp 的成员

这是我运行此代码时遇到的错误:

更有趣的是下一行没有任何问题

真的快把我逼疯了。我什至手动包含了 result.h

我尝试了这些的所有组合

包括result.h、mysql++.h、connection.h

0 投票
1 回答
320 浏览

c++ - Qt/MySQL++/向量迭代题

我有一个关于我目前正在处理的 Qt/MySQL++ 项目中的向量迭代方法的问题。

到目前为止,我一直在使用 for 循环来遍历它们,并且作为 C++ 的初学者,并没有意识到普遍接受的方法是使用 vector::iterator。我一直在尝试寻找一种方法可以将它们转换为这个模型,但我有点卡住了。我的代码如下:

(连接器是我的自定义数据库连接类的一个实例)

我的问题是我看不到只使用 vector::iterator 而不是增量 size_t 的方法,因为我正在使用它i来定义设置 QTableWidgetItem 的位置。不过,同时使用这两者绝对是荒谬的。

有任何想法吗?

非常感谢任何人和每个人!

XT

更新:将我的程序更改为使用 QSql 对象和 tableView,而不是 tableWidget,这一切都非常好!感谢任何花时间阅读问题的人!

0 投票
1 回答
270 浏览

c++ - mysql++ 全局表变量

我已经阅读了文档,并查看了示例,但我仍然无法弄清楚如何将表分配给 C++ 中的全局变量。我可能有点被宠坏了。我来自 python,使用 mysqldb 将表分配给全局变量确实是一件简单的事情。

可以将表分配给全局变量以在 mysqlpp 类之外访问吗?

例如,当编译以下代码时,我收到错误:错误:'sched_recs' 未在此范围内声明

如果我将 for 循环移回类中,则一切正常,但这是有限的。这是唯一的方法吗?所有的例子似乎都使它看起来如此。

0 投票
3 回答
453 浏览

c++ - std::ostream 的私有继承和使用 operator<<

问题:

错误 (MS Visual Studio 2010) 是错误 C2666: 'std::basic_ostream<_Elem,_Traits>::operator <<' : 5 重载具有类似的转换

我做错了什么还是这是另一个 MS Visual Studio 错误?

解决方法: 添加以下成员方法似乎可行,但我想深入了解根本原因。

背景: MySql++ 不能与 Visual Studio 2010 一起编译(参见邮件列表),因为 VS2010 不支持(除其他外)std::ostream 的公共继承。作为一种解决方法,我正在尝试私有继承,因为这比组合更少黑客攻击。MyClass& 运算符<<(const char* str) { std::ostream& os = *this; 操作系统 << str; 返回*这个;}

完整的错误信息

0 投票
0 回答
534 浏览

c++ - C++ Visual Studio mysqlpp 严重内存泄漏

在过去的一个月里,我一直在为此挠头,但我仍然无法弄清楚发生了什么。

问题是我在使用 Visual Studio 2005 编译的 Windows Server 2008 上运行的 C++ 应用程序上存在非常严重的内存泄漏。这是一个托管项目。该应用程序从大约 5-6MB 开始(根据任务管理器),并在 ~200MB 左右开始出现故障症状。我知道任务管理器是一个粗糙的工具,但考虑到泄漏的规模,它似乎可以使用。

我已将问题缩小到 MySQL 数据库交互。如果应用程序不与数据库交互,则不会泄漏内存。

所有数据库交互都使用 mysql++。我已按照 tangentsoft.net 手册页中的构建说明进行操作。

我们已经评估了代码的线程安全性(也就是说,我们确保每个线程只使用来自该线程的 mysqlpp 对象而不使用其他线程)并检查以确保为使用“new”创建的任何动态生成的对象调用所有析构函数。

在互联网上,我不断看到来自 mysqlpp 类用户的各种报告,这些报告表明某处存在泄漏。特别是,有人讨论了使用 mysqlpp 时 Win C API 会如何泄漏:

http://www.phpmarks.com/6-mysql-plus/ffd713579bbb1c3e.htm

这个讨论似乎在修复中结束,但是,当我在我的应用程序中尝试修复时,它仍然泄漏。

我实现了上面线程中引用的应用程序的一个版本,但添加了一些来自手册页的建议:

我添加了 Sleep(50) 只是为了限制循环的每个阶段,以便每个函数都有时间“安定下来”。我知道这可能没有必要,但至少这样我可以消除它作为一个原因。

然而,这个程序泄漏得非常快(每小时约 1mb)。

我在几个地方看到过与我类似的问题,但没有得出任何结论:(

所以我并不孤单。我突然想到 mysqlpp 类以有用而闻名,因此必须非常健壮。鉴于这种情况,我仍然看不出我做错了什么。有没有人有一些使用 Visual Studio 2005 的 mysqlpp 经验,可能会阐明这个问题?

干杯,亚当。

编辑

我使用指针创建了另一个示例,以防 c 在循环中被复制:

这也泄漏了。然后我根据这段代码创建了一个控制示例,它根本不会泄漏:

请注意,我还在此处留下了对 MySQL C API 的调用,以证明这不是泄漏的原因。然后,我使用指针创建了一个示例,但没有调用连接/断开连接:

这不会泄漏。

所以区别只是使用 mysqlpp::connect / disconnect 方法。我将深入研究 mysqlpp 类本身并尝试看看发生了什么。

干杯,亚当。

编辑

这是进行检查的泄漏代码的示例。

干杯,亚当。

0 投票
1 回答
425 浏览

c++ - mysqlpp::Query::store() 上的 MySQL++ malloc_error_break

扣上这个。

奇怪的是,我在网上找不到任何关于这样的错误的信息,但这让我抓狂。希望大家能对这个问题有所了解。

我正在使用 MySQL++ 从表中获取一些基本数据。它可以很好地连接到数据库并且查询似乎可以工作,但是运行 mysql::Query::store() 会导致 malloc 错误。

gdb 回溯给了我

Load() 是正在运行的函数。

如果我进行两次查询(出于好奇,我这样做了),

我没有得到 malloc 错误,但确实得到了 SQL 错误:

我的 g++ 版本是

有任何想法吗?我以前使用过 MySQL++,我从来没有遇到过任何问题。

此外,这个 Load() 序列恰好位于动态链接库中。(我有一个加载/卸载系统。)如果我注释掉 MySQL 部分,编译并加载库,一切都很好。如果我然后取消注释该部分,重新​​编译并重新加载库(主程序仍在运行),查询运行成功!!!wtf

任何帮助都会令人难以置信。谢谢!!

0 投票
1 回答
667 浏览

c++ - mysqlpp中的引用错误


和其他许多人一样,我在编译包括 mysqlpp 的程序时遇到了问题。
mysqlpp 似乎安装正确,库路径也在 /etc/ld.so.conf 中正确设置并且是已知的(所以我认为):

但是好像有问题,编译器没有找到mysqlpp的库。
链接编译器命令:

缺少 mysqlpp 引用的错误消息(除了许多其他缺少的引用):

我已经黔驴技穷了。也许你们中的某个人可以帮助我。谢谢!!

0 投票
0 回答
354 浏览

c++ - C++ 使用 mysql++ 连接到 MySQL

我对 C++ 和 Linux (Ubuntu) 很陌生,所以如果我理解有点慢,请不要杀了我。

我尝试使用 C++ 和 MySQL 连接器 mysql++ 建立与我的 SQL DB 的连接。至于开发环境,我用的是Eclipse。至于编译器,Linux 的标准编译器(g++)。

用了 9 个小时的 Google 之后,我非常乐观地认为我必须安装所有必要的库。但是好吧,因为它不起作用,也许不是。

我尝试使用的 C++ 代码是:

我在构建项目时遇到的错误:

我在从源代码安装 mysql++ 时也遇到了一些问题(即使安装了 mysql 客户端和连接器,./configure 也找不到 mysqlclient 库)。

希望你能帮助我,因为我没有想法和谷歌页面。