MinGW 我只安装了mingw32-base和msys-base,我是安装在C盘。mingw32-gcc-g++也可以安装,编译的时候只是提示没有找到g++,但不影响运行。
eclipse会引用MINGW_HOME变量,配置环境变量MINGW_HOME=C:\MinGW;
上面的红框变量是eclipse自动建的。MSYS_HOME变量都不用建了。
eclipse,专门下了两个版本的eclipse,感觉不完善,各种问题,下的第一个是eclipse-cpp-helios-SR2-win32,第二个是eclipse-cpp-luna-R-win32,helios的里面界面跟luna里的界面有的不同,而且helios的环境变量配置有问题,添加后不能删除,用的话两个都可以连到mysql,只是配置上界面的位置变了。
添加mysql.h
然后bulid,发现提示undefined reference to `mysql_server_init@12',需要生成mysql.a连接文件,先把reimp.exe和dlltool.exe文件放到MinGW\bin目录下,MinGW\bin要配置到环境变量里,然后跳到libmysql.lib目录下,也就是mysql数据库的lib目录,然后使用reimp根据lib生成a文件
把生成的libmysql.a文件添加到项目中
添加a目录和搜索libmysql.a文件
Error while launching command: gdb --version
Run->Debug Configurations->Debugger->GDB Debugger->Browse
或者Window->Preferences->C/C++->Debug->GDB->GDB Debugger->Browse
选择MinGW\bin下的gdb.exe文件
如果没有这个错误提示直接用默认的gdb即可。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
static char* server_groups[] = { "embedded", "server", "this_program_server",
(char*) NULL };
int main() {
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char sqlcmd[200];
int unsigned t;
mysql_library_init(0, NULL, server_groups);//初始化MYSQL数据库
mysql_init(&mysql);//初始化MYSQL标识符,用于连接
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//设置编码
if (!mysql_real_connect(&mysql, "localhost", "root", "111111", "mysql",
0, NULL, 0)) {
fprintf(stderr, "无法连接到数据库,错误原因是:%s/n", mysql_error(&mysql));
} else {
puts("数据库连接成功");
sprintf(sqlcmd, "%s", "select * from ME_MENU");
t = mysql_real_query(&mysql, sqlcmd, (unsigned int) strlen(sqlcmd));
if (t) {
printf("查询数据库失败%s/n", mysql_error(&mysql));
} else {
res = mysql_store_result(&mysql);//返回查询的全部结果集
while ((row = mysql_fetch_row(res))) {//mysql_fetch_row取结果集的下一行
for (t = 0; t < mysql_num_fields(res); t++) {//结果集的列的数量
printf("%s\t", row[t]);
}
printf("\n");
}
mysql_free_result(res);//操作完毕,查询结果集
}
mysql_close(&mysql);//关闭数据库连接
}
mysql_library_end();//关闭MySQL库
return EXIT_SUCCESS;
}
各种麻烦,感觉eclipse for c/c++没有java在window下成熟,没java的eclipse好用,特别添加外部.h文件,好麻烦,没linux方便。