MySQL数据库相关知识梳理

MySQL基本知识梳理

int  STDCALL mysql_query(MYSQL *mysql, const char *q):连接上数据库后,将连接上数据库额句柄和执行的SQL语句传入到函数中即可执行该语句。
MYSQL_RES *res;
res = mysql_store_result(MYSQL *mysql);   //取回结果集地址

mysql_store_result的返回值是执行sql语句后的结果,返回值为MYSQL_RES类型的指针,该类型是一个结构体;

typedef struct st_mysql_res {

  my_ulonglong row_count;                               // 结果集的行数

  unsigned int field_count, current_field;            // 结果集的列数,当前列

  MYSQL_FIELD *fields;                                    // 结果集的列信息

  MYSQL_DATA *data;                                      // 结果集的数据

  MYSQL_ROWS *data_cursor;                        // 结果集的光标

  MEM_ROOT field_alloc;                                   // 内存结构

  MYSQL_ROW row;                                         // 非缓冲的时候用到

  MYSQL_ROW current_row;                           //mysql_store_result时会用到。当前行

  unsigned long *lengths;                                //每列的长度

  MYSQL *handle;                                           // mysql_use_result会用。

  my_bool eof;                                                 //是否为行尾

} MYSQL_RES;


MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); 表示的是记录集里的一条数据;

unsigned int STDCALL mysql_num_fields(MYSQL_RES *res); 表示的是返回数据有多少列,即多少个字段;


my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);     表示的是返回数据有多少行,即行数;

连接数据库的并且取得数据库中表数据的程序:

#include <string.h>
#include <stdio.h>
#include <iostream>
#include "mysql/mysql.h"

int main(void)
{
    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;
    mysql_init(&mysql);    //初始化MYSQL对象
    if(!mysql_real_connect(&mysql, "localhost", "db_user", "db_user", "database", 0,NULL, 0)) {
        std::cout << "Failed to connect to Mysql!" << std::endl;
        return 0;
    } else {
        std::cout << "Connected to Mysql success!\n";
    }
    char *order = "select * from leon";
    /*查询,成功则返回0*/
    int flag = mysql_real_query(&mysql, order, (unsigned int)strlen(order));
    if(flag) {
        std::cout << "Query failed!" << std::endl;
        return 0;
    } else {
        std::cout << "Query success!" << std::endl;
    }


    //mysql_store_result将全部的查询结果读取到
    res = mysql_store_result(&mysql);
    //mysql_fetch_row检索结果集的下一行
    while(row = mysql_fetch_row(res)) {
        //mysql_num_fields返回结果集中的字段数目
        for(int i = 0; i < mysql_num_fields(res); i++)
        {
            std::cout << row[i] << '\t';
        }
        puts("");
    }
    mysql_close(&mysql);
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值