建网站价格 优帮云,设计网站,辽宁工程招标网信息平台,平度网站建设公司电话首先要保证下载好mysql的库和头文件#xff0c;头文件在/usr/include/mysql/目录下#xff0c;库在/usr/lib64/mysql/目录下#xff1a; 一般情况下#xff0c;在我们安装mysql的时候#xff0c;这些都提前配置好了#xff0c;如果没有就重装一下mysql。如果重装mysql还是…首先要保证下载好mysql的库和头文件头文件在/usr/include/mysql/目录下库在/usr/lib64/mysql/目录下 一般情况下在我们安装mysql的时候这些都提前配置好了如果没有就重装一下mysql。如果重装mysql还是没有就再装一下mysql-devel
yum install -y mysql-devel; 这些都准备好之后就可以开始在c语言中使用mysql了
初始化mysql
头文件包含mysql/mysql.h 参数传nullptr即可
接口的返回值MYSQL*是一个结构体指针包含很多mysql的属性这个值在后面许多接口中都要作为参数传递所以很重要如果初始化mysql失败就会返回nullptr
初始化mysql一定会申请空间所以每次使用完mysql都要手动释放空间: 连接mysql 这个接口参数较多但都是在登陆mysql的信息
第一个参数就是初始化mysql的返回值
第二个参数是登录的主机或ip
第三个参数是登录用户
第四个参数是密码
第五个参数是要使用的数据库
第六个参数是mysqld运行的端口号一般是3306可以在/etc/my.cnf中设置
第七个参数一般传nullptr第八个参数一般传0
如果连接成功返回值与第一个参数相同如果连接失败返回空指针
设置字符集
如果我们要插入的数据是中文客户端使用的字符集和服务端不同就会出现乱码的问题。 成功返回0不成功返回非0
发送mysql命令 第二个参数是mysql的命令命令末尾可以不带
成功返回0不成功返回非0
对于createinsertdeleteupdatedrop等命令执行后不需要返回数据所以直接调用这个接口即可但是对于select命令需要返回数据就需要其他接口配合使用了
获取数据——mysql_store_result 这个接口可以获取读取结果MYSQL结构体中有数据的缓冲区这个接口就是将其缓冲区的数据放到MYSQL_RES结构体中。
创建MYSQL_RES结构体也需要分配空间使用结束后需要回收 从MYSQL_RES中获取数据的行数——mysql_num_rows 从MYSQL_RES中获取数据的列数——mysql_num_fields 从MYSQL_RES中获取列名——mysql_fetch_fields 这个接口的参数是上一个接口的返回值。
返回值是所有列的结构体的数组列的结构体是存储列属性的其中有一个name对象就是列的名称。 从MYSQL_RES中获取单行数据——mysql_fetch_row 可以将一行数据的多个列想象成多个char*类型的数据那么这个MYSQL_ROW就是char**,只需像数组一样即可访问行数据。
将上面四个接口的返回值配合循环的使用就可以打印出select数据的结果了。
例子
#include iostream
#include mysql/mysql.husing namespace std;
int main()
{//初始化mysqlMYSQL* my mysql_init(nullptr);if(my nullptr) {cout init fail endl;return 1;}//连接mysqlmy mysql_real_connect(my, 127.0.0.1, ly, 123123, test1, 3306, nullptr, 0);if(my nullptr) {cout connect fail endl;return 2;}//设置字符集mysql_set_character_set(my, utf8);//发出命令if(mysql_query(my, create table info(id int primary key, name varchar(32), phone_num char(11) unique))){cout create fail endl;}if(mysql_query(my, insert into info (id, name, phone_num) values (1, Tom, 12345678999))){cout insert fail endl;}if(mysql_query(my, insert into info (id, name, phone_num) values (2, Peter, 12345678911))){cout insert fail endl;}// if(mysql_query(my, drop table info))// {// cout insert fail endl;// }if(mysql_query(my, select * from info)){cout select fail endl;}MYSQL_RES* res mysql_store_result(my);MYSQL_FIELD* colname mysql_fetch_fields(res);int row mysql_num_rows(res);int col mysql_num_fields(res);//打印列名for(int i 0; i col; i){cout colname[i].name \t;}cout endl;//打印数据for(int i 0; i row; i){MYSQL_ROW rowdata mysql_fetch_row(res);for(int j 0; j col; j){cout rowdata[j] \t;}cout endl;}//回收数据结构体mysql_free_result(res);//回收mysqlmysql_close(my);
}
编译代码时必须说明库的路径给出库名在编译命令加上如下选项
-L /usr/lib64/mysql -lmysqlclient;