首页 > 技术文章 > 文献笔记(九)

lunzhenlun 2018-11-16 17:22 原文

一、基本信息

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

时间:2018

出版源:南昌市医学科学研究所

领域分类:电子技术与软件工程

二、研究背景

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

难点:能熟练掌握运用

相关工作: C 语言 数据库 MySQL

三、研究内容

C 语言访问 MYSQL 数据库的相关函数

MYSQL *mysql_init(MYSQL *mysql)
初始化 MYSQL 实例
Void mysql_close(MYSQL *mysql)
关闭 MYSQL 实例,释放内存
Int mysql_query(MYSQL *mysql,constchar *query)	对指定连接进行查询。成功返回 0,出错返回非 0 值
MYSQL_RES *musql_store_ result(MYSQL *handle)	返回查询的结果
MYSQL_ROW mysql_fetch_ row(MYSQL_RES *res)	返回第一行查询的结果

C语言访问 MySQL 的程序实例

#include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h>
// 定义数据库查询宏(此处根据参数
userid 查询 teacher 表的 name year 属性)
#define SELECT_QUERY "select name,year from teacher where userid = %d"
//main 函数,C 语言执行的入口
int main(int argc, char **argv) {
// 定义使用的变量
// 调用 mysql_init 方法,初始化连接实例mysql_init(&mysql);
// 向数据库插入数据(insert 操作),如遇异常则返回
res = mysql_query (&my_connection, "INSERT INT O teacher(name,year) VALUES('Ana', 1989)");
if (res)
fprintf (stderr, "Insert error %d: %s\n", mysql_errno (&my_connection), mysql_ error(&my_connection));
}
// 修改数据(update 操作),如遇异常则
返回
res = mysql_query (&my_connection, "update teacher set year= 1999 where name
='Peter'");
if (res)
fprintf (stderr, "Update error %d: %s\n", mysql_errno (&my_connection), mysql_ error(&my_connection));
}
sprintf(buf,SELECT_QUERY,atoi(argv[1]));
                   // 查询数据行(select 操作)
if(mysql_query(handle,buf)) { fprintf(stderr,"Query failed (%s)\n",mysql_
error(handle)); exit(1);
}
// 缓存结果
If (! (result=mysql_store_result(handle))) { fprintf(stderr,"Get result from %s failed\n",
mysql_error (handle)); exit(1);
}
printf("number of fields returned: 
%d\n",mysql_num_fields (result)); query ok !

四、结论

用 C 语言访问 MySQL 在实际 Web 应用中并不多见,但是有时候为了获取更高访问性能,会直接用 C 语言来开发相关的数据库访问模块,这样可以更好地利用服务器的资源, 并且使用 C 语言具有更好的安全性,所以用 C 语言访问 MySQL 数据库相比其他语言虽然在程序开发上成本高一些,但是具备更好的性能和安全性。

参考文献

[1] 吴垠 , 余瑾 , 郭磊等 .MySQL 数据库在嵌入式 Linux 平台上的移植和应用 [J]. 电子技术 ,2011,38(07):12-13.

[2] 赵 洪 明 .MySQL 中访问数据库的程序 设 计 [J]. 黄石高等专科学校学报 ,2012,18(01):10-12.

[3] 李达 . 基于知识库的高分辨率遥感影像分割系统的设计与实现 [D]. 太原 : 山西大学 ,2014.

推荐阅读