C/C++使用Select检索MySQL中的数据
来源:互联网 发布:java onvif 编辑:程序博客网 时间:2024/06/06 07:10
首先创建一个表和插入多行数据,如下
Create database demo;Use demo;DROP TABLE IF EXISTS `Students`;CREATE TABLE `Students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, `sex` char(5) DEFAULT NULL, `address` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;如下图所示:
随后插入数据:
insert into `Students`(`id`,`name`,`sex`,`address`) values (1,'小白','男','北京市-定海区'),(2,'小黑','女','湖南省-长沙市-岳麓区'),(3,'小黄','男','江苏省-扬州市-邗江区'),(4,'小红','女','雅苗蝶-雅苗蝶');查询结果如下图所示:
然后我们介绍下如下函数:
1.int mysql_set_character_set(MYSQL *mysql, char *csname):函数用于为当前连接设置默认的字符集。字符串csname指定了1个有效的字符集名称。连接校对成为字符集的默认校对。
2.mysql_query() : 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。
4.MYSQL_RES *mysql_store_result(MYSQL *mysql):对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),必须调用mysql_store_result()或mysql_use_result() 。通过检查mysql_store_result()是否返回0,可检测查询是否没有结果集。
5.mysql_num_rows:其表示取得结果集中行的数目。此命令只对SELECT语句有效。
6.mysql_num_fields() :函数返回结果集中字段的数
7.MYSQL_ROW mysql_fetch_row(MYSQL_RES *result):检索一个结果集合的下一行。当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。当在mysql_use_result()之后使用时,当没有更多的行可检索时或如果出现一个错误,mysql_fetch_row()返回NULL。
8.mysql_fetch_lengths(): 函数取得一行中每个字段的内容的长度。
下面是程序代码:
#include <stdio.h>#include <stdlib.h>#include <WinSock2.h>#include <mysql.h>#pragma comment(lib,"libmysql")int my_select(MYSQL *conn){const char *sql = "select * from Students";int ret = mysql_query(conn, sql);if (ret != 0){printf_s("error:%s\n", mysql_error(conn));system("pause");exit(1);}MYSQL_RES *result = mysql_store_result(conn);if (NULL == result){printf("error(%d):%s\n", mysql_errno(conn), mysql_error(conn));system("pause");exit(1);}else{my_ulonglong num_rows = mysql_num_rows(result);printf_s("got:%d row:\n", (int)num_rows);unsigned int num_fields = mysql_num_fields(result);printf_s("number of fields:%d\n", (int)num_fields);MYSQL_ROW row;char szBuffer[1024];while (row = mysql_fetch_row(result)){unsigned long *lengths = mysql_fetch_lengths(result);for (int i = 0; i < num_fields; i++){char *filed = row[i];unsigned int field_length = lengths[i];printf_s("column[%d],length[%d],data[%s]\n", i, field_length, filed ? filed : "null");}printf_s("\n");}mysql_free_result(result);}system("pause");return 0;}int main(){if (mysql_library_init(0, NULL, NULL)){printf("could not initialize MySQL library\n");system("pause");exit(1);}MYSQL conn;mysql_init(&conn);MYSQL *ret = mysql_real_connect(&conn, "127.0.0.1", "root", "123456","demo", 0, NULL, 0);if (!ret){printf("Failed to connect to database: %s\n",mysql_error(&conn));system("pause");exit(1);}if (!mysql_set_character_set(&conn, "gbk")){printf("Character for the connection : %s\n",mysql_character_set_name(&conn));}my_select(&conn);mysql_close(&conn);mysql_library_end();system("pause");return 0;}
运行结果如下:
- C/C++使用Select检索MySQL中的数据
- MySQL SELECT检索数据
- MySQL检索数据之SELECT
- 【MySql】检索数据SELECT语句
- mysql的检索数据SELECT
- linux C中的select的使用
- [My SQL] 使用SELECT检索数据
- 使用SQL SELECT语句检索数据
- MySQL 检索数据Select——MySQL系列(一)
- SELECT语句检索数据
- 利用SELECT检索数据
- select 检索数据
- MySQL基础——简单概念及 select 数据检索
- MySQL--操作简记(select检索、order by排序数据)
- linux 使用c语言连接mysql数据
- ORACLE SQL 1 使用 SQL SELECT 语句检索数据
- C语言 select函数使用
- C语言 select函数使用
- Promotions Gym
- MSSql dbcc checkdb 出现错误处理
- 快速上手Ubuntu之安装常用软件篇——打造一个满足基本娱乐办公的Ubuntu
- iOS scene之间的跳转类型——Segue
- 运维小技巧:使用ss命令代替 netstat,和netstat说再见
- C/C++使用Select检索MySQL中的数据
- 分布式事务中2PC与3PC的区别
- 常见的异常
- PAT 乙级1002
- Memcache原理
- 每天一个小题目——小赛打车
- Java的日期与时间(八)java.util.TimeZone
- c++基础之多态
- 537. Complex Number Multiplication