基于C语言访问的MySQL数据库

龙源期刊网 http://www.qikan.com.cn

基于C语言访问的MySQL数据库

作者:张丽

来源:《电子技术与软件工程》2016年第22期

摘 要

本文重点介绍了MySQL数据库的数据操作,并研究了在C语言中操作MySQL数据库的基本API,包括MySQL库中表的基本定义和常见的数据库操作如增删改查、联合查询等。 【关键词】C语言 数据库 MySQL 1 引言 1.1 C语言

C语言产生于50年前,是一种常采用的高级程序语言。基于C语言的设计采用相对简单的编译器,提供低级访问内存与语言结构,能有效地将程序语言映射到机器指令,并提供各种运行支持。C语言常用于操作系统、编译器、数据库为代表的汇编语言编写的应用程序设计等。C语言基于其灵活、跨平台、高效等特点,从微控制器嵌入到超级计算机开发等均被广泛采用。

C程序的开发通常需要预编译、编译、链接、运行等阶段。预编译采用宏替换源码;编译过程将源码翻译成二进制机器码;链接过程将程序采用的静态、动态库进行连接,生成二进制可执行程序,并在运行阶段直接运行。 1.2 MySQL数据库

现代常用的数据库分为关系型数据库、分布式数据库以及NOSQL等几种类型。目前的OLTP(On-Line Transaction Processing,即联机数据处理过程)中多采用以MySQL为代表的关系型数据库。

MySQL是一个由瑞典MySQLAB公司开发的开源的关系数据库管理系统(RDBMS),采用通用的结构化查询语言(Structured Query Language),使用C与C++语言编写,使用yacc SQL解析器。MySQL源代码采用GNU通用公共许可证的条款(即开源条款),更受各国开发者的青睐。MySQL的数据操作执行快速稳定、开发接口丰富、开发文档完善等,被广泛应用于以Web应用为代表的程序开发与应用。 2 数据库相关操作 2.1 连接 MySQL

龙源期刊网 http://www.qikan.com.cn

数据库连接的命令为― mysql -h 服务器Ip地址 -u 用户名-p 密码 ‖。假设远程主机的IP 为:10.0.0.1,用户名为root,密码为psd。则需要输入以下命令行: mysql –h10.0.0.1 -uroot –ppsd 2.2 创建数据库

数据库的创建命令为(此处DBTest为数据库名): Create database DBTest;

显示数据库列表命令为(此处DBTest为数据库名): show databases DBTest;

使用数据库命令为(此处DBTest为数据库名): use DBTest; 2.3 建立数据表

在当前使用的数据库建立数据表(此处teacher为表名): create table teacher

( id varchar(10) not null primary key, //属性名—ID、长度10的可变字符串型、不可为空、主键name varchar(10) not null, //属性名—name、长度10的可变字符串 不可为空year date ); //属性名-year 日期 3 C程序访问MySQL数据库 3.1 相关数据结构定义 定义查询命令的结构体类型: typedef struct st_mysql { …

} MYSQL;

定义返回数据的结构体类型:

龙源期刊网 http://www.qikan.com.cn

typedef struct st_mysql_res { …

} MYSQL_RES; 3.2 相关函数

C语言访问MYSQL数据库的相关函数如表1所示。 MYSQL *mysql_init(MYSQL *mysql) 初始化MYSQL实例 Void mysql_close(MYSQL *mysql) 关闭MYSQL实例,释放内存

Int mysql_query(MYSQL *mysql,const char *query) 对指定连接进行查询。成功返回0,出错返回非0值

MYSQL_RES *musql_store_result(MYSQL *handle) 返回查询的结果 MYSQL_ROW mysql_fetch_row(MYSQL_RES *res) 返回第一行查询的结果 3.3 C语言访问 MySQL 的程序实例 #include #include #include

//定义数据库查询宏(此处根据参数userid查询teacher表的name year属性) #define SELECT_QUERY \,year from teacher where userid = %d\ //main函数,C语言执行的入口 int main(int argc, char **argv) { //定义使用的变量

//调用mysql_init方法,初始化连接实例 mysql_init(&mysql);

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4