1、通常从MySQL数据库中检索数据有4个步骤:

(1)发出查询: 用mysql_query发出查询。

(2)检索数据: 用mysql_store_result/mysql_use_result

(3)处理数据:用mysql_fetch_row, mysql_fetch_field

(4)整理所需要的数据:用mysql_free_result允许MySQL进行必要的整理工作。

2、例子:结构化的数据库查询输出

/*
* MysqlQuery2.c
*
* Created on: Sep 8, 2013
* Author: root
*/
#include <stdlib.h>
#include <stdio.h>
#include <mysql/mysql.h>
MYSQL my_connection;
MYSQL_RES * res_ptr;
MYSQL_ROW sqlrow;
void display_header();
void display_row(MYSQL * ptr); int main(){
int res;
int first_row = ;
mysql_init(&my_connection);
if(mysql_real_connect(&my_connection, "localhost", "root", "ROOT123456", "icmp", , NULL, )){
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));
return -;
}else{
res_ptr = mysql_use_result(&my_connection);
if(res_ptr){
display_header();
while((sqlrow = mysql_fetch_row(res_ptr))){
if(first_row){
display_header();
first_row = ;
}
display_row(&my_connection);
}
if(mysql_errno(&my_connection)){
fprintf(stderr, "Retrieve error:%s\n", mysql_error(&my_connection));
return -;
}
}
mysql_free_result(res_ptr);
}
mysql_close(&my_connection);
printf("Connection closed.\n");
}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 -;
}
}
return ;
} void display_header(){
MYSQL_FIELD * field_ptr;
printf("Column details:\n");
while((field_ptr = mysql_fetch_field(res_ptr)) != NULL){
printf("\tName: %s\n", field_ptr->name);
printf("\tType:");
if(IS_NUM(field_ptr->type)){
printf("Numeric field\n");
}else{
switch(field_ptr->type){
case FIELD_TYPE_VAR_STRING:
printf("VARCHAR\n");break;
case FIELD_TYPE_LONG:
printf("LONG\n");break;
default:
printf("Type is %d, check in mysql_com.h\n", field_ptr->type);
}
} printf("\tMax width %d\n", field_ptr->length);
if(field_ptr->flags & AUTO_INCREMENT_FLAG){
printf("\t Auto increments\n");
}
printf("\n");
}
} void display_row(MYSQL * ptr){
unsigned int field_count;
field_count = ;
while(field_count < mysql_field_count(ptr)){
printf("%s ", sqlrow[field_count]);
field_count++;
}
printf("\n");
}

运行结果:

Connection success.
Column details:
    Name: childno
    Type:Numeric field
    Max width 11
     Auto increments

Name: fname
    Type:VARCHAR
    Max width 30

Name: age
    Type:Numeric field
    Max width 11

Column details:
1 wangle 28
2 xuyehui 29
Connection closed.

执行SQL语句---SELECT的更多相关文章

  1. java执行sql语句使用别名时显示Column '***' not found

    java执行sql语句使用别名时显示Column '*' not found 在做一个小项目时遇到个问题,执行sql语句使用别名时总是报sql异常 Column '*' not found,折腾半天终 ...

  2. mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg

    mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg ...

  3. 4.5 .net core下直接执行SQL语句并生成DataTable

    .net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...

  4. 三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  5. Entity Framework Code First执行SQL语句、视图及存储过程

    1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...

  6. EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand

    前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...

  7. sp_executesql得到执行sql语句的返回值

    执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...

  8. EF中执行sql语句,以及事务

    EF to sql string sql = "select T_Task.BSID,T_Task.CloseDate,T_Task.CompleteDate,T_Task.CloseUse ...

  9. C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】

    为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...

随机推荐

  1. delphi 调用js脚本

    function ExecScript(Code,Lang,Func:string):string; var script:OleVariant; begin script:=CreateOleObj ...

  2. CF D. Walking Between Houses (贪心)

    题意: 现在有n个房子排成一列,编号为1~n,起初你在第1个房子里,现在你要进行k次移动,每次移动一都可以从一个房子i移动到另外一个其他的房子j里(i != j),移动的距离为|j - i|.问你进过 ...

  3. Linux启动过程的C语言代码分析

    1. main函数 参见上方http://www.cnblogs.com/long123king/p/3543872.html,代码跳转到main函数. arch/x86/boot/main.c 1: ...

  4. Windows7下命令行使用MySQL

    我在Win7下安装的MySQL版本是mysql-5.0.22-win32 1.在Win7环境下安装MySQL,关于安装方法可以参考文章: Win7系统安装MySQL5.5.21图解教程.win7安装M ...

  5. linux网卡驱动更新方法

    kernel: eth0: igb_reset_task: Reset adapter解决方法 1. LVS集群web项目,运行大概一个月左右出现访问慢的情况,查询mysql服务器时/var/log/ ...

  6. XVIII Open Cup named after E.V. Pankratiev Stage 5: Eastern Grand Prix

    contest link easy: EI medium-easy: BCDGK medium: L medium-hard: AFH A. Artifacts B. Brackets and Dot ...

  7. Unity中动态绘制圆柱体

    问题背景 上次写了动态绘制立方体,这最近又来了新功能,绘制圆柱(风筒),要求是给了很多节点,根据节点去动态绘制风筒,风筒就是圆柱连接而成的,可以理解为管道,还有就是拐角处注意倒角,圆润过度过来. 实现 ...

  8. 记一次vue 普通异步请求微信二进制二维码 乱码 问题解决然后渲染

    后端压力大,前端分忧. /*用微信小程序token拿二维码*/ async fetchMINIQRcode({commit,state},params){ var instance = axios.c ...

  9. .Net平台调用の参数对应

    具体对应参见官方<----点击此处 C#和C++的互操作性,同行的文章不错,点我跳转 //C++中的DLL函数原型为  //extern "C" __declspec(dll ...

  10. etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc等配置文件区别

    什么是交互式shell和非交互式shell,什么是login shell 和non-login shell. 交互式模式:就是shell等待你的输入,并且执行你提交的命令.这种模式被称作交互式是因为s ...