RSS
热门关键字:  下载  cms  模版  开源  dedecms
当前位置 :| 主页 > 站长学院 > 数据库 > Mysql >

在MySQL数据库中使用C执行SQL语句 (3)

来源:ccidnet.com 作者:佚名 时间:2006-10-09 Tag: 点击:
检索数据

现在开始编写从数据库中检索数据的第一个程序。我们将选择所有年龄大于5的行的内容。不幸的是我们还不知道如何处理这个数据,所以我们能做的只有循环检索它。这便是 select1.c:


            #include 
            #include 
            #include "mysql.h"
            MYSQL my_connection;
            MYSQL_RES *res_ptr;
            MYSQL_ROW sqlrow;
            int main(int argc, char *argv[]) {
            int res;
            mysql_init(&my_connection);
            if (mysql_real_connect(&my_connection, "localhost", "rick",
            "bar", "rick", 0, NULL, 0)) {
            printf("Connection success\n");
            res = mysql_query(&my_connection, "SELECT childno, fname,
            age FROM children WHERE age > 5");
            if (res) {
            printf("SELECT error: %s\n", mysql_error(&my_connection));
            } else {
            res_ptr = mysql_store_result(&my_connection);
            if (res_ptr) {
            printf("Retrieved %luows\n",(unsignedlong)mysql_num_rows(res_ptr));
            while ((sqlrow = mysql_fetch_row(res_ptr))) {
            printf("Fetched data...\n");
            }
            if (mysql_errno(&my_connection)) {
            fprintf(stderr, "Retrive error: s\n",mysql_error(&my_connection));
            }
            }
            mysql_free_result(res_ptr);
            }
            mysql_close(&my_connection);
            } else {
            fprintf(stderr, "Connection failed\n");
            if (mysql_errno(&my_connection)) {
            fprintf(stderr, "Connection error %d: %s\n",
            mysql_errno(&my_connection),mysql_error(&my_connection));
            }
            }
            return EXIT_SUCCESS;
            }
            


检索结果集并循环通过已检索的数据的重要部分都已突出显示。

一次检索一行数据

要按需要逐行检索数据,而不是立即获取全部数据并将它存储在客户机中,可以将mysql_store_result调用替换成 mysql_use_result:

            MYSQL_RES *mysql_use_result(MYSQL *connection);
            


这个函数还取得一个连接对象并返回结果结合指针,或者出错时返回NULL。与mysql_store_result相似,它返回指向结果集对象的指针;关键的不同点在于返回时,实际上没有将任何数据检索到结果集,只是初始化结果集以准备好检索数据。

参考资料

您可以参阅本文在developerWorks全球站点上的英文原文.

本文章取自Wrox Press Ltd出版的Professional Linux一书的第5章。

关于作者

Rick Stones是一位系统设计师,他在一家大型泛欧制药分销和分配公司的IT部门工作。从1985年开始,他一直在使用各种形式的 UNIX,并且发现带有早期 .99 CD-ROM发行版的Linux。他用各种语言编写UNIX、Linux和其它平台的软件,同时还安装并管理几台Linux服务器。在非常有限的业余时间,他努力提高他的钢琴演奏技巧。

从大学时代开始接触C和UNIX V6时起,Neil Matthew对于UNIX和Linux已经超过20年的经验。从那时起他就在IT业工作,主要从事通信软件的开发,一直保持对于深奥的编程语言和开发技术的热情。现在,他作为系统设计师,对技术战略和QA提出建议。他热心于在公司企业内建立Linux商业案例。业余时间,写作或骑马为乐,Neil努力劝说他的妻子和两个孩子与他一起在乡间散步。Neil参与编写了Wrox Press发行的好几本书,最著名的是共同著作了Beginning Linux Programming和Professional Linux Programming。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表