龙源期刊网 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);