一、基本信息
标题:基于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
", 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
", 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)
",mysql_
error(handle)); exit(1);
}
// 缓存结果
If (! (result=mysql_store_result(handle))) { fprintf(stderr,"Get result from %s failed
",
mysql_error (handle)); exit(1);
}
printf("number of fields returned:
%d
",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.