博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux C语言操作Mysql
阅读量:4121 次
发布时间:2019-05-25

本文共 2930 字,大约阅读时间需要 9 分钟。

rpm -ivh 安装

-i 安装,v 显示进度,h打印####表示进度

/var/lib/mysql  日志文件,数据库文件存放目录

/usr/lib/mysql 接口函数动态连接库存放目录

/usr/include/sql 接口函数库文件头存放目录

启动MySQL   service mysql start

停止MySQL  service mysql stop

MYSQL  为MYSQL结构体;

mysql_library_init()初始化MySQL数据库,提供初始化的数据库管理,对于与客户端连接的应用程序,提供了改进的内存管理功能。

Mysql_init()若参数为空,则初始化一个新的结构体,分配新的内存空间,其他情况把MySQL初始化;

mysql_real_connect(MYSQL *mysql,const char* host,const char* user,const char* passwd,const char* db,unsigned int port,const char* unix_socket,unsigned long client_flag)用于连接数据库,参数分别为MYSQL结构体,主机名,数据库用户名,密码,数据库名,端口号(一般为0),unix_socket(一帮为NULL),client_flag一般为0;

mysql_error()查看错误原因

mysql_erron()给出错误出现的语句,返回值为0则表示调用失败;

mysql_query(MYSQL *mysql,const char *query) 执行MYSQL语句的函数,将一个指针指向一个连接结构,并且执行包含SQL的文体字符串,与命令行工具不同,他没有表示终止的;,运行成功返回0,失败返回非0;

返回数据的语句:4步

1.发出查询:mysql_query()

mysql_real_query(MYSQL *mysql,const char *query,unsigned int length)执行由query指向的sql查询,其必须有一个单一的sql语句组成(不加; \g)

对于包含二进制的数据的查询,必须使用mysql_real_query()因为二进制代码数据可能包含“\0"字符

2.检索数据 mysql_store_result(MYSQL*mysql,MYSQL_RES *result)用来在检索的集合结果中存储数据,从服务器中,检索所有的数据并将它立即存储在客户端,返回一个结果集合结构体指针,若失败,返回NULL

3.处理数据 mysql_fetch_row() 获得从store_result中得到的结果结构体并从中检索单行,返回分配的行结构体中的数据,当没有等多的数据或出错时返回NULL

mysql_data_seek()在一个查询的结果集合中定位任意行,允许用户进入结果集,设置将由下一个获取操作返回的行

mysql_row_tell() 返回一个偏移值,表示结果集中的当前位置(非行号)

mysql_row_seek()移动结果集中的当前位置

4.整理数据  mysql_free_result(MYSQL_RES *result)

mysql_field_count(MYSQL*mysql)得到一个连接对象并返回在结果集合中字段的数目,(每次输出一行)需要一次性获取一个字段的信息,然后把其输入到一个包含数据和源数据的结构体中去;

mysql_fetch_row(MYSQL_RES *result)可以重复调用这个函数,在结果集合中检索所有有关列的信息,当没有剩下更多的字段时,mysql_fetch_row()返回NULL

mysql_library_end()关闭数据库

gcc -g -o mysql mysql.c -I/usr/include/mysql -L/usr/lib -lmysqlclient -lpthread -lm -lrt -ldl

-I/usr/include/mysql  指定mysql.h所在的位置

-L/usr/lib  -lmysqlclient 指定libmysqlclient.a (.so)所在的位置

或者gcc -g -o mysql mysql.c $(mysql_config --cflags) $mysql_config --libs)

连接代码:

#include <mysql.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.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 t,r;

mysql_library_init(0,NULL,server_groups);//初始化库

mysql_init(&mysql);//初始化MYSQL标识符,用于连接

if(!mysql_real_covinnect(&mysql,"localhost","root","root","db_record",0,NULL,0)){

相应的要改变

  fprintf(stderr,"无法连接到数据库,错误原因是:%s/n",mysql_error(&mysql));

 

}

else {

 puts("数据库连接成功");

//首先向数据库中插入一条记录

 sprintf(sqlcmd,"%s","insert into friends (name,telephone) Values ('xx','xx')");///相应的要改变

也可以改成

printf("please input sql command:");

gets(sqlcmd);//直接从shell中输入sql命令,

 mysql_query(&mysql,sqlcmd);

 sprintf(sqlcmd,"%s","select * from friends");///相应的要改变

 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_fe

 }

 printf("/n");

 

}

 

mysql_free_result(res);//操作完毕,查询结果集

}

mysql_close(&mysql);//关闭数据库连接

 

}

 

mysql_library_end();//关闭MySQL库

 

return EXIT_SUCCESS;

}

 

转载地址:http://thtpi.baihongyu.com/

你可能感兴趣的文章
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>