日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

C/C++使用Select检索MySQL中的数据

發(fā)布時(shí)間:2025/3/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++使用Select检索MySQL中的数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先創(chuàng)建一個(gè)表和插入多行數(shù)據(jù),如下

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; 如下圖所示:


隨后插入數(shù)據(jù):

insert into `Students`(`id`,`name`,`sex`,`address`) values (1,'小白','男','北京市-定海區(qū)'),(2,'小黑','女','湖南省-長沙市-岳麓區(qū)'),(3,'小黃','男','江蘇省-揚(yáng)州市-邗江區(qū)'),(4,'小紅','女','雅苗蝶-雅苗蝶'); 查詢結(jié)果如下圖所示:


然后我們介紹下如下函數(shù):

1.int?mysql_set_character_set(MYSQL?*mysql,?char?*csname):函數(shù)用于為當(dāng)前連接設(shè)置默認(rèn)的字符集。字符串csname指定了1個(gè)有效的字符集名稱。連接校對(duì)成為字符集的默認(rèn)校對(duì)。

2.mysql_query()?:?僅對(duì)?SELECT,SHOW,EXPLAIN?或?DESCRIBE?語句返回一個(gè)資源標(biāo)識(shí)符,如果查詢執(zhí)行不正確則返回?FALSE。對(duì)于其它類型的?SQL?語句,mysql_query()?在執(zhí)行成功時(shí)返回?TRUE,出錯(cuò)時(shí)返回?FALSE。

4.MYSQL_RES?*mysql_store_result(MYSQL?*mysql):對(duì)于成功檢索了數(shù)據(jù)的每個(gè)查詢(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK?TABLE等),必須調(diào)用mysql_store_result()或mysql_use_result()?。通過檢查mysql_store_result()是否返回0,可檢測(cè)查詢是否沒有結(jié)果集。

5.mysql_num_rows:其表示取得結(jié)果集中行的數(shù)目。此命令只對(duì)SELECT語句有效。

6.mysql_num_fields()?:函數(shù)返回結(jié)果集中字段的數(shù)

7.MYSQL_ROW?mysql_fetch_row(MYSQL_RES?*result):檢索一個(gè)結(jié)果集合的下一行。當(dāng)在mysql_store_result()之后使用時(shí),如果沒有更多的行可檢索時(shí),mysql_fetch_row()返回NULL。當(dāng)在mysql_use_result()之后使用時(shí),當(dāng)沒有更多的行可檢索時(shí)或如果出現(xiàn)一個(gè)錯(cuò)誤,mysql_fetch_row()返回NULL。

8.mysql_fetch_lengths():?函數(shù)取得一行中每個(gè)字段的內(nèi)容的長度。

下面是程序代碼:

#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; }
運(yùn)行結(jié)果如下:


總結(jié)

以上是生活随笔為你收集整理的C/C++使用Select检索MySQL中的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。