黑脸艺术家 发表于 2023-5-10 14:47:11

MySQL与Dev C++连接

按给出步骤如下:
#include<stdio.h>//流函数库
#include<stdlib.h>//标准库
#include<string.h>//字符串库
#include<winsock2.h>//连接模式库
#pragma comment(lib,"libmysql");//驱动环境
#include<mysql.h>//数据库操作函数环境
#define HOST "localhost"//数据库服务名
#define USERNAME "root"//用户名
#define PASSWORD "633721"//密码
#define DATABASE "cjgl"//连接目标数据库
(问题1:这些是否在下列设置完成后再在Dev C++软件上输入编译并运行?)

1.工具→编译器选项→显示,把<ID 27071 branslation missing>前的勾去掉
(问题2:我的版本是5.11没有这个选项,该如何设置?)
2.工具→编译选项→勾选第一个框框,并输入 -fexec-charset=gbk
                      第二个框中,在后面增加 -lmysql,即改为-static-libgcc -lmysql   
(问题3:我的编译器配置为:TDM-GCC 4.9.2 64-bit Release,跟网络教程选的TDM-GCC 4.9.2 64-bit Debug不一样,有影响吗?)
3.工具-编译选项-代码生成/优化-连接器-产生调试信息(改成yes);然后,工具-环境变量-浏览debug变量一栏打钩;(已设置)
4.工具,编译选项,目录,库/包含文件,把MySQL安装目录下的lib、include目录添加(已设置)

远程访问设置:
(问题4:这个是在哪里输入这些代码?服务器和远程客户是在哪里?)
1.在服务器上运行:mysql -u root -P 3306 -p
                  use user;
                  Update user set host=’%’ where user=’root’;
                  flush privileges;
(问题5:我猜测是在MySQL Workbench里输入,但显示开头mysql出错?)
2.在远程客户上运行: mysql -h 服务器IP地址 -P 3306 -u root -p


int main()
{
        MYSQL mysql;        //声明数据库变量
        mysql_init(&mysql);        //初始化数据库连接
        MYSQL_RES *result=NULL;
        MYSQL_FIELD *field;
        MYSQL_ROW row;
        int i,num;
        if(mysql_real_connect(&mysql,HOST,USERNAME,PASSWORD,DATABASE,0,NULL,CLIENT_FOUND_ROWS)) {//数据库连接函数,0指默认端口号3306,如其它端口提供服务,则如实写
                //连接成功
                printf("连接成功!\n");
                //mysql_query(&mysql,"SET NAMES UTF8");
                mysql_query(&mysql, "SET NAMES GB2312");
                //mysql_query(&mysql,"commit");
                //插入数据
                mysql_query(&mysql,"insert into student(xh,xm) values('lgl888','张三')");
                mysql_query(&mysql,"commit");//作用: 有时数据还在缓存中, 为了确保完成, 可以用commit提交一下事物。一般是不需要做的
                //查询数据
                i=mysql_query(&mysql,"select * from student");//返回值为0则表示查询成功
                if(!i){
                        result=mysql_store_result(&mysql);
                        if(result){
                                //获取字段数量和名称
                                printf("---------------获取字段数量和名称---------------\n");
                                num=mysql_num_fields(result);
                                printf("字段共有%d个!\n",num);
                                while(field=mysql_fetch_field(result)){
                                        printf("字段名: %s\n",field->name);
                                }
                                //获取查询结果
                                printf("------------------获取查询结果------------------\n");
                                while(row=mysql_fetch_row(result)){
                                        printf("查询结果:xh=%s xm=%s xb=%s\n",row,row,row);
                                }
                        }
                }else{
                        printf("查询失败!\n");
                }
        } else {
                //连接失败
                printf("连接失败!abc\n");
        }
        return 0;
}

谢谢解答!!!!!

isdkz 发表于 2023-5-10 14:47:36

问题1:是的,这些设置需要在Dev C++软件上输入编译并运行前完成。

问题2:如果你的版本没有这个选项,可以尝试在菜单栏中找到“工具”->“编译器选项”->“命令行”,在“命令行”框中输入“-fexec-charset=gbk -static-libgcc -lmysql”。

问题3:一般来说,编译器版本不同不会影响程序的正确性。只要你的编译器能够支持MySQL的库文件和函数,就可以正常编译和运行程序。

问题4:这些代码需要在MySQL服务器上输入。服务器和远程客户端是两个不同的计算机,你需要在服务器上运行这些代码来设置远程访问权限。

问题5:你需要在命令行中输入这些代码,而不是在MySQL Workbench中。如果你遇到了“mysql出错”的问题,可能是因为你没有将MySQL的安装路径添加到系统环境变量中,你可以在“环境变量”中添加MySQL的安装路径来解决这个问题。
页: [1]
查看完整版本: MySQL与Dev C++连接