您的位置:首页 > 数据库 > MySQL

vs2015,vc6.0连接mysql数据库,出现运行中断异常问题

2017-09-17 15:11 543 查看
在进行vs2015和vc6.0链接mysql数据库是遇到的总结:

1,初次使用mysql,所以就写了以下代码来连接,测试,结果出现了图片上的问题,(只截图了vs2015上的异常问题,vc6.0也是差不多的问题)

问题如下:



问题代码:

#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;

#pragma comment(lib, "libmysql.lib")

//单步执行,不想单步执行就注释掉
#define STEPBYSTEP

int main() {
cout << "****************************************" << endl;
#ifdef STEPBYSTEP
system("pause");
#endif

//必备的一个数据结构
MYSQL mydata;
//连接数据库
if (NULL
!= mysql_real_connect(&mydata, "localhost", "root", "123456", "db_books", 3306, NULL, 0))
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
}
else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
return 0;
}我写了这段代码,但是在不同的编译软件上运行都报错误,然后开始调试,找错误。最后明白了,这个中断异常的原因就是因为没有去初始化数据库(db_books)和定义的数据结构(mydata),所以才会发生读写权限的异常。
下面是改进的代码:

#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;

#pragma comment(lib, "libmysql.lib")

//单步执行,不想单步执行就注释掉
#define STEPBYSTEP

int main() {
cout << "****************************************" << endl;

#ifdef STEPBYSTEP
system("pause");
#endif

//必备的一个数据结构
MYSQL mydata;

//初始化数据库
if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
}
else {
cout << "mysql_library_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
}
else {
cout << "mysql_init() failed" << endl;
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
/*************************************************
//在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
}
else {
cout << "mysql_options() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif
****************************************************/
//连接数据库
if (NULL
!= mysql_real_connect(&mydata, "localhost", "root", "123456", "db_books", 3306, NULL, 0))
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
}
else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif
/***********************************************************
//sql字符串
string sqlstr;

//创建一个表
sqlstr = "CREATE TABLE IF NOT EXISTS user_info";
sqlstr += "(";
sqlstr +=
"user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";
sqlstr +=
"user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";
sqlstr +=
"user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";
sqlstr += ");";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() create table succeed" << endl;
}
else {
cout << "mysql_query() create table failed" << endl;
mysql_close(&mydata);
return -1;
}
*************************************************************/
#ifdef STEPBYSTEP
system("pause");
#endif
return 0;
}最后运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐