使用C语言访问MySQL数据 —— 执行SQL语句(3)

本文介绍了如何使用C语言连接MySQL数据库并执行SQL语句,特别是处理UPDATE、DELETE、INSERT操作和查询结果。通过示例代码展示了如何获取数据、处理NULL值以及打印格式化的查询结果,强调了mysql_field_count函数在处理元数据中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2011-05-16 wcdj

 

(一) 不返回数据的SQL语句 —— UPDATE、DELETE 和 INSERT
(二) 发现插入的内容
(三) 返回数据的语句
(1) 一次提取所有数据的函数
(2) 一次提取一行数据的函数
(四) 处理返回的数据



(四) 处理返回的数据

现在已知道了如何提取行,下面可以学习如何处理返回的实际数据了。如同大多数SQL数据库一样,MySQL返回两种类型的数据
【1】从表中提取的信息,也就是列数据
【2】关于数据的数据,即所谓的元数据 (metadata),例如,列名和类型。

问题 :如何将数据本身转化为有用的形式。

mysql_field_count函数提供了一些关于查询结果的基本信息。它接受连接对象,并返回结果集中的字段(列)数目:
unsigned int mysql_field_count ( MYSQL *connection );

在更通用的方式下,你可以用mysql_field_count做其他事情,比如判断为何mysql_store_result的调用会失败。例如,如果mysql_store_result返回NULL,但是mysql_field_count返回一个正数,你可以推测这是一个提取错误。但是,如果mysql_field_count返回0,则表示没有列可以提取,这可以解释为何存储结果会失败。

例子:
打印无格式化的数据
select3.c

 

编译程序:
$ gcc -I/usr/include/mysql select3.c -L/usr/lib/mysql -lmysqlclient -o select3

问题: 上面的程序可以运行,虽然输出不是特别美观。但是并未考虑结果中可能出现的NULL值。如果想要打印出更整洁的格式化(或表格化)的数据,需要同时得到MySQL返回的数据和元数据。可以使用mysql_fetch_field来同时将元数据和数据提取到一个新的结构中。

MYSQL_FIELD *mysql_fetch_field ( MYSQL_RES *result );
需要重复调用此函数,直到返回表示数据结束的NULL值为止。然后,可以使用指向字段结构数据的指针来得到关于列的信息。结构MYSQL_FILED定义在mysql.h中。

例子:
更完整的打印
select4.c

编译程序:
$ gcc -I/usr/include/mysql select4.c -L/usr/lib/mysql -lmysqlclient -o select4

这仍然不是很漂亮,但它很好地阐明了如何通过同时处理原始数据和元数据来更有效地使用数据。

更多使用方法参考MySQL手册。

参考
SQL语言基本语句介绍
Linux 程序设计(第4版)第8章 P.296

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值