本文共 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/