ITPub博客

首页 > 数据库 > MySQL > 转:Linux C语言操作MySQL

转:Linux C语言操作MySQL

MySQL 作者:shanghuazzu1984 时间:2014-03-07 15:04:10 0 删除 编辑

1.MySQL数据库简介

MySQL是一个开源码的小型关系数据库管理系统,体积小,速度快,总体成本低,开源。MySQL有以下特性:

(1) 使用C和C++编写,并使用了多种编译器进行测试,保证源码的可移植性。

(2) 支持多线程,利用CPU资源,支持多用户。

(3) 可以处理拥有上千万条记录的大型数据库。

(4)既可以作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为 一个库而嵌入到其他软件中去。

 

2. MySQL数据库的安装 安装MySQL数据库需要三个软件包:

(1)服务器

(2)客户端

(3) 开发库-如果用C或C语言开发,就得安装开发库。

MySQL-server-5.5.8-1.rhel5.i386.rpm

MySQL-client-5.5.8-1.rhel5.i386.rpm

MySQL-devel-5.5.8-1.rhel5.i386.rpm 在Linux下用rpm -ivh 安装即可。

 

3. MySQL的相关目录

/usr/bin MySQL客户端程序或脚本

/usr/sbin mysqld服务器相关程序

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

/usr/share/doc/packages 使用手册,开发文档存放目录

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

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

/usr/share/mysql 错误消息和字符集文件存放目录

/usr/share/sql-bench 基本程序存放目录

 

4. MySQL数据库的基本操作

(1)启动MySQL服务器 service mysql start

(2) 停止MySQL服务器 service mysql stop

(3)root用户指的是MySQL数据库下的root目录而不是Linux下的root用户

为root用户添加密码: mysqladmin -u root password 123 //为root用户添加了新密码123

修改root用户密码为234: mysqladmin -u root -p password 234

Enter password:

或者是: mysqladmin -u root -p password

Enter password:

New password:

Confirm new password:

(4)建立数据库和表

首先进入用户下,如在root用户下建立一个db_record的数据库: mysql -u root -p

Enter password:

create database db_record

然后切换到当前数据库下,建立表: use db_record create table friends ( name Char(15),telephone VarChar(20));

最后向表中插入数据 insert into friends (name,telephone) Values ("john","222");

查询: select * from friends;

(5)建立,删除用户及授权

insert into mysql.user(Host,User,Password) values("localhost","min",password("123"));

 flush privileges; //刷新权限列表

grant all privileges on tree.* to min@localhost identified by '123'; //授权min用户拥有tree数据库的所有权

 也可以: grant select, insert,update,delete on db_record.* to min@localhost identified by '123';

 删除用户: 将该用户的记录从MySQL数据库删除:

use mysql //切换数据库

delete from user where user='min' and host='localhost'; //删除min用户的记录

flush privileges; //刷新权限

 

5. C语言操作MySQL数据库

步骤:

(1)初始化MySQL库,库可以是mysqlclient C客户端库,或mysqld嵌入式服务器库,函数 mysql_library_init(),对于与客户端链接的应用程序,提供了改进内存管理的功能。

(2)初始化连接处理程序 mysql_init();主要是用来初始化数据库标识符,为连接准备

(3)连接到MySQL服务器,mysql_real_connect()函数。

(4) 调用 mysql_close()关闭与MySQL服务器的连接

(5)调用mysql_library_end()函数结束MySQL库的使用,包括释放内存,防止内存泄露等操作。

 

下面是用C语言操作MySQL数据库的例子:

 


//gcc -g -o  mysql mysql1.c -I/usr/include/mysql -L/usr/lib -lmysqlclient -lpthread -lm -lrt -ldl
//$(mysql_config --cflags) $(mysql_config --libs)

#include 
#include 
#include 
#include 
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数据库
mysql_init(&mysql);//初始化MYSQL标识符,用于连接
if(!mysql_real_connect(&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')");
 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_fetch_row(res)){//mysql_fetch_row取结果集的下一行
 for(t=0;t

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

也可以: gcc -g -o mysql mysql.c $(mysql_config --cflags) $(mysql_config --libs)

解释:

(1) mysql_config --cflags 寻找mysql编译相关的头文件等信息。

(2) mysql_config --libs   寻找mysql编译所需要的库函数。

(3) -L/usr/lib 指出静态库寻找的路径。在这里也可以不写,因为系统会去默认的/lib,/usr/lib去寻找库函数。如果libmysqlclient.a在/usr/lib/mysql下,那么-L/usr/lib/mysql 这个目录。

(4)非标准的库函数,链接时用-lmysqlclient.原库名为libmysqlclient.a去掉lib和.a。

(5) -I是包含头文件等信息,及include .
(6) 动态链接库的寻找顺序:

a. LD_LIBRARY_PATH设置的目录下.

b. /etc/ld.so.conf 加到这个文件中的目录。

c. 默认的 /usr/lib,/lib目录下。

(7)头文件的寻找顺序

a. -I所指定的目录中去寻找 

b.gcc的环境变量指定的目录
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH
c. /usr/include /usr/local/include 等目录下寻找。

(8)静态库的寻找顺序

a. -L所指定的静态库寻找路径

b.gcc环境变量LIBRARY_PATH

c. /lib ,/usr/lib,/usr/local/lib

如果MySQL数据库启动不起来,可以先执行killall mysqld ,然后再用service mysql start试试。

关于MySQL数据库的基本操作就总结到这里了。

转自:http://blog.csdn.net/nedushy123/article/details/18270019
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26263809/viewspace-1114550/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-09-10