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;
}最后运行结果如下:
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;
}最后运行结果如下:
相关文章推荐
- 当vs2015 创建ADO实体生成模型的时候出现的连接异常
- VS2015下C语言连接mysql数据库问题
- vs2015运行c++出现的小问题及解决方案(希望能帮助一些和我一样的新手)
- VS2015在.NET下通过EF连接MySQL数据库配置问题
- VS2015 +EF6 连接MYSQL数据库生成实体
- 关于VS2015Winform程序连接acess2013数据库的问题
- vs.net c#连接ORCALE 出现64与32问题
- 运行部署在Weblogic上的Web应用时,过一段时间程序就提示数据连接断了,重起Weblogic就好了。过一段时间又出现同样的问题。
- 关于VS Code使用code runner编译运行java出现报错乱码的问题
- windows系统下解决Qt连接MySQL数据库时出现的问题:QMYSQL driver not loaded
- VS2015 +EF6 连接MYSQL数据库生成实体
- windows7 安装VS2015出现“”安装包丢失或损坏”问题的解决办法
- VS2015 +EF6 连接MYSQL数据库生成实体
- [原创]用windows7连接windows2003的终端服务器时,出现"由于这台计算机没有远程桌面客户端访问许可证,远程会话被中断"的问题
- VS安装出现问题:在此计算机中仅有部分visual studio2010产品已升级到SP1,只有全部升级,产品才能正常运行x
- Java Web连接mysql数据库出现class not found问题
- 运行hadoop中出现的数据格式问题(for input string 异常.........(后面一串数字))
- [置顶] vs2015编译运行程序遇到应用程序无法正常启动0xc000007b的问题
- vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误