最新消息:

c++连接Mysql数据库,程序不报错,不启动

零散记录 CPPKU 38浏览 0评论

用MFC开发的程序,程序启动时连接Mysql并从数据库表中读取记录。本来运行正常,突然无法启动了,也没有任何报错窗口弹出。

进入windows系统的事件查看器,发现,生成了两条记录,一条是针对mysql的,如下:

Aborted connection 4 to db: ‘gkgpv2’ user: ‘admin’ host: ‘tqsrv131-git’ (Got timeout reading communication packets)

一条是针对我开发的exe的。

后来单步跟踪,发现是数据库字段为NULL时,将值赋值给std::string类型变量导致的崩溃。(数据库表中插入了新的记录,个别字段未赋值,为NULL)。

如下图,但是我们还会经常写这样的代码:

std::string赋值NULL

std::string赋值NULL

备忘一下,以后将char*类型赋值给std::string类型一定记得检测一下是否为空指针。

C++ basic_string::_S_construct null not valid

std::string 字符串不可以初始化为NULL,虽然能通过编译,但是会出现运行错误。
std::string 使用以下两种初始化为空的方式:

std::string s;//执行默认构造函数
std::string s = "";//执行拷贝构造函数
  • 1
  • 2

清空字符串,参考cplusplus.com帮助文档

std::string s = "123";
s.clear();
  • 1
  • 2

Clear string
Erases the contents of the string, which becomes an empty string (with a length of 0 characters).

另:std::string 不可以与null相比较,可以与”“比较,使用empty()函数,length() == 0

转载请注明:cppku-C++库 » c++连接Mysql数据库,程序不报错,不启动

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址