执行SQL语句---SELECT
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的更多相关文章
- java执行sql语句使用别名时显示Column '***' not found
java执行sql语句使用别名时显示Column '*' not found 在做一个小项目时遇到个问题,执行sql语句使用别名时总是报sql异常 Column '*' not found,折腾半天终 ...
- 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 ...
- 4.5 .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
- 三种执行SQL语句的的JAVA代码
问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...
- Entity Framework Code First执行SQL语句、视图及存储过程
1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...
- EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...
- sp_executesql得到执行sql语句的返回值
执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...
- EF中执行sql语句,以及事务
EF to sql string sql = "select T_Task.BSID,T_Task.CloseDate,T_Task.CompleteDate,T_Task.CloseUse ...
- C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】
为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...
随机推荐
- FTP的PORT和PASV的连接方式以及数据连接端口号计算
FTP的PORT和PASV的连接方式以及数据连接端口号计算 PORT(自动)方法的连接途中是: 客户端向服务器的FTP端口(原始是21)发送连接请求,服务器领受连接,建立一条command链路. ...
- Vue学习笔记【23】——Vue组件(组件的定义)
定义Vue组件 什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可: 组件化和模块化的不同: ...
- PHP ftp_get() 函数
定义和用法 ftp_get() 函数从 FTP 服务器上下载一个文件并保存到本地一个文件中. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_get(ftp_connec ...
- WarUtil
/** *包名:cn.yufu.utils *描述:package cn.yufu.utils; */ package cn.yufu.utils; import java.io.File; impo ...
- git+可视化工具+github/码云
git (实际上git和TortoiseGIT是一回事,只是TortoiseGIT把git命令行功能做了一个可视化处理,所以下面git和TortoiseGIT实现功能是一样的) 1.如何使用Git上传 ...
- Spring源码剖析4:懒加载的单例Bean获取过程分析
本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...
- json格式化在线工具推荐
现在系统对接基本都采用json格式的报文,杂乱无章的json让人看起来头大,这里推荐一款在线格式化json的工具, 工具地址: http://www.matools.com/json 这个在线Json ...
- springMVC整合swagger(亲自试验完全可用)
swagger是什么: [plain] view plain copy Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一 ...
- LintCode 汉诺塔
题目链接:https://www.lintcode.com/problem/tower-of-hanoi/description 题目大意 经典递归问题. 分析 由于是经典问题了,这里不讨论用递归实现 ...
- JDK8新特性之Stream流
是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,却是两个完全不一样的概念和东西. 流可以简单的说是处理数据集合的东西,可以申明式流式A ...