1. 程式人生 > >MySQL資料庫相關知識梳理

MySQL資料庫相關知識梳理

MySQL基本知識梳理
int  STDCALLmysql_query(MYSQL*mysql,constchar*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_ROWSTDCALLmysql_fetch_row(MYSQL_RES*result); 表示的是記錄集裡的一條資料;

unsignedintSTDCALLmysql_num_fields(MYSQL_RES*res); 表示的是返回資料有多少列,即多少個欄位;

my_ulonglongSTDCALLmysql_num_rows(MYSQL_RES*res);     表示的是返回資料有多少行,即行數;

連線資料庫的並且取得資料庫中表資料的程式:

#include<string.h>
#include<stdio.h>
#include<iostream>
#include"mysql/mysql.h"
intmain(void)
{
MYSQLmysql;
MYSQL_RES*res;
MYSQL_ROWrow;
mysql_init(&mysql);//初始化MYSQL物件
if(!mysql_real_connect(&mysql,"localhost","db_user","db_user","database",0,NULL,0)){
std::cout<<"FailedtoconnecttoMysql!"<<std::endl;
return0;
}else{
std::cout<<"ConnectedtoMysqlsuccess!\n";
}
char*order="select*fromleon";
/*查詢,成功則返回0*/
intflag=mysql_real_query(&mysql,order,(unsignedint)strlen(order));
if(flag){
std::cout<<"Queryfailed!"<<std::endl;
return0;
}else{
std::cout<<"Querysuccess!"<<std::endl;
}
//mysql_store_result將全部的查詢結果讀取到
res=mysql_store_result(&mysql);
//mysql_fetch_row檢索結果集的下一行
while(row=mysql_fetch_row(res)){
//mysql_num_fields返回結果集中的欄位數目
for(inti=0;i<mysql_num_fields(res);i++)
{
std::cout<<row[i]<<'\t';
}
puts("");
}
mysql_close(&mysql);
return0;
}