赞
踩
首先,C/C++连接MYSQL数据库的思路都是将MYSQL官方提供的工具加入编译器的库或路径(至少是Dev-C++和VS是这样)
它们在你MYSQL安装目录的MYSQL Server文件夹下的"include"文件夹和"lib"文件夹中(MYSQL Server路径:C:\Program Files\MySQL\MySQL Server 8.0)
那要怎么把它们加入编译器呢?作者下面就以Dev-C++的添加方法作为样本做一个详细介绍!
首先打开Dev-C++,点击其窗口栏中的"Tools"(工具),再点击其中的"Compiler options"(编译器选项)
然后在打开窗口的第二个大框中添加字符串" -lmysql",像这样
然后点击上面的"Directories"(索引)选项,之后点击里边的"Libraries"(库)选项,然后下面有这样一个添加的小按钮,点击进入文件浏览器,在搜索框中输入
“C:\Program Files\MySQL\MySQL Server 8.0\lib”,点击确定,之后点击它下面的"add"(添加)按钮
然后跳转到隔壁"C Includes",以同样的方法添加一个路径
“C:\Program Files\MySQL\MySQL Server 8.0\include”
之后要不嫌麻烦可以顺带把隔壁的"C++ Includes"一道配了,这样用C++就也能连接MYSQL了
之后点击最下面的"OK"按钮,这样编译器就算是配好了;然后呢,还有最后一步操作:
将之前添加路径时用到的"lib"文件夹下的“libmysql.dll”文件复制粘贴到系统根目录(“C:\Windows”)下,这样整个环境配置工作就算是完整落幕了(鼓掌)
C/C++连接MYSQL思路:
一、初始化数据库连接句柄
二、连接数据库
三、设置字符集,防止发生乱码
四、设置操作命令
五、设置结果集接收返回结果(并输出)
六、关闭结果集、断开连接
上才艺:
- #include <stdio.h>
- #include <mysql.h>
- int main() {
- char host[10] = "localhost";//端口号
- char user[10] = "root";//用户
- char password[10] = "********";//密码
- char database[10] = "mysql";//数据库
-
- MYSQL* conn;//设置数据库连接句柄
- conn = mysql_init(NULL);//初始化连接句柄
- /*MYSQL conn;
- mysql_init(&conn);*/
- if(!conn){
- puts("初始化失败!");
- return EXIT_FAILURE;
- //exit(1);
- }
-
- conn = mysql_real_connect(conn,host,user,password,database,0,NULL,0);//连接数据库
- if(conn) puts("数据库连接成功!");//判断数据库是否连接成功
- else{
- printf("数据库连接失败,错误:%s",mysql_error(conn));
- mysql_close(conn);
- return EXIT_FAILURE;
- //exit(1);
- }
-
- //字符编码,解决乱码
- if(mysql_set_character_set(conn,"GBK")) puts("字符集设置错误!");
- else puts("字符集设置成功!");
-
- char query[20] = "select * from course";
- if(mysql_query(conn,query)) printf("查询失败,错误:%s\n",mysql_error(conn));
- else puts("查询成功!");
-
- MYSQL_RES* res;
- res = mysql_use_result(conn);//获取结果
- //res = mysql_store_result(conn);
- MYSQL_ROW row;//设置行结果容器
- while(row = mysql_fetch_row(res)){//获取行结果
- for(int t = 0;t < mysql_num_fields(res);t++)//将行结果分列输出
- printf("%s\t", row[t]);
- printf("\n");
- }
-
- mysql_free_result(res);//释放结果集
- mysql_close(conn);//关闭数据库连接
- return 0;
- }

C++版代码:
- #include <iostream>
- #include <mysql.h>
- using namespace std;
- int main(int argc, char** argv) {
- char host[10] = "localhost";
- char user[10] = "root";
- char password[10] = "********";
- char database[10] = "mysql";
-
- MYSQL mysql;
- if(!mysql_init(&mysql)){
- cout<<"初始化失败!"<<endl;
- return EXIT_FAILURE;
- //exit(1);
- }
-
- if (mysql_real_connect(&mysql,host,user,password,database,0,NULL,0))
- cout<<"数据库连接成功"<<endl;
- else{
- cout<<"数据库连接失败,错误:"<<mysql_error(&mysql)<<endl;
- mysql_close(&mysql);
- return EXIT_FAILURE;
- //exit(1);
- }
-
- if(mysql_set_character_set(&mysql,"GBK")) cout<<"字符集设置错误!"<<endl;
- else cout<<"字符集设置成功!"<<endl;
-
- char query[20] = "select * from c";
- if(mysql_query(&mysql,query)) cout<<"查询失败,错误:"<<mysql_error(&mysql)<<endl;
- else cout<<"查询成功!"<<endl;
-
- MYSQL_RES* res;
- res = mysql_store_result(&mysql);
- //res = mysql_use_result(&mysql);
- //如果前边使用的是连接句柄对象,则此处只能使用"mysql_store_result"函数
- MYSQL_ROW row;
- for(int i = 0;i < mysql_num_rows(res);i++){
- row = mysql_fetch_row(res);
- for(int j = 0;j < mysql_num_fields(res);j++)
- cout<<row[j]<<"\t";
- cout<<endl;
- }
-
- mysql_free_result(res);
- mysql_close(&mysql);
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。