centos 7 c++连接mysql的常用函数说明及使用样例
以下函数使用之前需安装mysql,并包含mysql.h头文件,设置好mysqlclient动态库
一、mysql_init()
MYSQL * mysql_init(MYSQL *mysql); // 初始化一个MYSQL 连接的实例对象
这个函数有两种用法:
、参数传NULL 值。
// 这种情况很显然,是mysql_init() 函数内部申请了一片内存,然后返回了首地址。
MYSQL *ms_conn = mysql_init(NULL);
// 用完记得要释放
mysql_close(ms_conn), ms_conn = NULL; 、参数传对象地址。
// 这种情况就是使用栈内存,mysql_init() 函数显然不应该给分配堆内存。
MYSQL ms_eg;
MYSQL *ms_conn = mysql_init(&ms_eg);
// 用完记得要释放
mysql_close(ms_conn), ms_conn = NULL;
二、mysql_real_connect()
#include<mysql.h>
函数原型描述:
MYSQL *mysql_real_connect (MYSQL *mysql, //mysql_init()函数初始化获得的mysql实例对象
const char *host, //主机名或IP地址
const char *user, //登录mysql的用户名
const char *passwd, //登录mysql的密码
const char *db, //设置连接指定的的数据库
unsigned int port, //端口,如果“port”不是0,其值将用作TCP/IP连接的端口号
const char *unix_socket, //如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道
unsigned long client_flag) //client_flag的值通常为0,但是,也能将其设置为下述标志的组合,以允许特定功能 //一些个标志
标志描述 CLIENT_COMPRESS
使用压缩协议。 CLIENT_FOUND_ROWS
返回发现的行数(匹配的),而不是受影响的行数。 CLIENT_IGNORE_SPACE
允许在函数名后使用空格。使所有的函数名成为保留字。 CLIENT_INTERACTIVE
关闭连接之前,允许interactive_timeout秒的不活动时间。 CLIENT_LOCAL_FILES
允许LOAD DATA LOCAL处理功能。 CLIENT_MULTI_STATEMENTS
通知服务器,客户端可能在单个字符串内发送多条语句。 CLIENT_MULTI_RESULTS
通知服务器,客户端能够处理来自多语句执行。 CLIENT_NO_SCHEMA
禁止db_name.tbl_name.col_name语法。 CLIENT_ODBC
客户端是ODBC客户端。它将mysqld变得更为ODBC友好。 CLIENT_SSL
如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。 用法:
MYSQL *ms_conn = mysql_init(NULL);
if(mysql_real_connect(ms_conn,"localhost","user_name","user_password"
,"testdb",0,NULL,0)==nullprt){
std::cout<<"mysql real_connect failed!"<<std::endl;
mysql_close(ms_conn);
}
三、mysql_query()
函数原型描述:
int mysql_query(MYSQL *mysql,const char *q) //执行*q的sql语句,结果返回至mysql,失败返回非0
用法:
std::string sql("select name,password from user;");
if(mysql_query(ms_conn,sql.c_str())){
//执行失败
std::cout<<"query failed "<<mysql_error(&ms_conn)<<std::endl;
}
四、mysql_store_result()
函数原型描述
MYSQL_RES *mysql_store_result(MYSQL *mysql) //将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中 如果查询失败,返回null指针
用法:
MYSQL_RES* result=mysql_store_result(ms_conn);
if(result==nullptr){
std::cout<<"mysql_store_result failed "<<mysql_error(ms_conn)<<std::endl;
}
五、mysql_use_result()
函数原型描述:
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql); //逐条进行查询,逐条将结果返回给客户端 当每条记录的数据特别大,不适用mysql_store_result()时使用
用法:
MYSQL_RES *result = mysql_use_result(mysql);
if(result){
while(row = mysql_fetch_row(result))
{
//row = mysql_fetch_row(result);
if(row==NULL)
break;
for(t=0;t<mysql_num_fields(result);++t)
printf("%s ",row[t]);
printf("\n");
}
}
六、mysql_fetch_row()
函数原型描述:
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); //从结果集中取得下一行数据
用法:
//typedef char **MYSQL_ROW; /* return data as array of strings */ mysql.h定义的MYSQL_ROW原型
MYSQL_ROW row = mysql_fetch_row(result);
if(row){
std::cout<<"row.name="<<row[0]<<std::endl;
std::cout<<"row.password="<<row[1]<<std::endl;
}
更常用一点的用法
while(row = mysql_fetch_row(result))
{
std::cout<<"row.name="<<row[0]<<std::endl;
std::cout<<"row.password="<<row[1]<<std::endl;
}
七、mysql_num_fields() 和mysql_num_rows()
mysql_num_fields()函数原型描述
unsigned int STDCALL mysql_num_fields(MYSQL_RES *result); //获取结果集中的列的数量
mysql_num_rows()函数原型描述
unsigned int STDCALL mysql_num_rows(MYSQL_RES *result); //获取结果集中的行的数量
八、mysql_fetch_row()
函数原型:
unsigned int STDCALL mysql_field_count(MYSQL *mysql); //返回最近查询的结果列的数量。
用法:
int sql_num=mysql_field_count(ms_conn);
九、mysql_list_fields()
函数原型描述:
MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table, const char *wild); //返回匹配一个简单的正则表达式的列名。
用法:
MYSQL_RES *tbl_cols = mysql_list_fields(ms_conn, "mytbl", "f%");
unsigned int field_cnt = mysql_num_fields(tbl_cols);
for (int i=0; i < field_cnt; ++i) { /* col describes i-th column of the table */
MYSQL_FIELD *col = mysql_fetch_field_direct(tbl_cols, i);
printf ("Column %d: %s\n", i, col->name);
}
十、mysql_fetch_field_direct()
函数原型描述
MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,unsigned int fieldnr); //返回一个表字段的类型,给出一个字段编号。
用法:
unsigned int num_fields; unsigned int i;
MYSQL_FIELD *field; num_fields = mysql_num_fields(result);
for(i = 0; i < num_fields; i++) {
field = mysql_fetch_field_direct(result, i);
printf("Field %u is %s\n", i, field->name);
}
十一、mysql_eof()
函数原型描述
my_bool STDCALL mysql_eof(MYSQL_RES *res); //确定是否已经读到一个结果集合的最后一行
用法
mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result))) {
// do something with data
}
if(!mysql_eof(result)) // mysql_fetch_row() failed due to an error
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
十二、mysql_error()
函数原型描述
const char * STDCALL mysql_error(MYSQL *mysql); //返回最近被调用的MySQL函数的出错消息
用法
if(*mysql_error(&mysql)) {
// an error occurred
}
if(mysql_error(&mysql)[0]) {
// an error occurred
}
十三、mysql_free_result()
函数原型描述
void STDCALL mysql_free_result(MYSQL_RES *result); //释放一个结果集合使用的内存。
用法:
mysql_free_result(ms_conn)
十四、MYSQL_RES 结构体
数据原型:
typedef struct st_mysql_res {
my_ulonglong row_count;
MYSQL_FIELD *fields;
MYSQL_DATA *data;
MYSQL_ROWS *data_cursor;
unsigned long *lengths; /* column lengths of current row */
MYSQL *handle; /* for unbuffered reads */
const struct st_mysql_methods *methods;
MYSQL_ROW row; /* If unbuffered read */
MYSQL_ROW current_row; /* buffer to current row */
MEM_ROOT field_alloc;
unsigned int field_count, current_field;
my_bool eof; /* Used by mysql_fetch_row */
/* mysql_stmt_close() had to cancel this result */
my_bool unbuffered_fetch_cancelled;
void *extension;
} MYSQL_RES;
本文链接:https://www.cnblogs.com/socks/p/13084027.html
centos 7 c++连接mysql的常用函数说明及使用样例的更多相关文章
- MYSQL基本常用函数
MYSQL基本常用函数 一.字符的操作函数 (ps:mysql中的索引都是从1开始的.) 1.instr(param1,param2) 返回子串第一次出现的索引,若找不到则返回0. param1填写操 ...
- MySQL之常用函数
MySQL有如下常用函数需要掌握: 1.数学类函数 函数名称 作用 ABS(x) 返回x的绝对值 SQRT(x) 返回x的非负二次方根 MOD(x,Y ...
- mysql中常用函数简介(不定时更新)
常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...
- php连接mySql,加密函数
连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost&qu ...
- 函数指针使用演示样例(參考Linux-内核代码)
本文有xhz1234(徐洪志)编写,转载请注明出处. http://blog.csdn.net/xhz1234/article/details/36635083 作者:徐洪志 近期阅读Linux-内核 ...
- MySQL数据库常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 不区分大小写 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等 ...
- PHP操作MySQL的常用函数
某些情况下(如html中),调用php的变量时,要给变量加{},若要使字符串变量加上引号,则还需要在{}外加引号 如: $sql="select * from admin where use ...
- MySQL数据库------常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. [1]ABS(x) 返回x的绝对值 例子:SELECT ABS(-1) -- 返回1 [2]CEIL(x),CEILING( ...
- MySQL 数据库 常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...
随机推荐
- shell 并行运行。
我实在是太喜欢这个方法了.爽歪歪. 原帖 http://www.xaprb.com/blog/2009/05/01/an-easy-way-to-run-many-tasks-in-parallel/ ...
- Enjoy the pain about Moloch
这echo出来的啥子嘛?意思是小姐姐有自虐倾向?可若是moloch有汉化包或翻译文件,小姐姐至于这么“享受”install的过程吗? 过程都走过了,那就记录一下吧:1.找个Ubuntu镜像,阿里云镜像 ...
- layui菜单点击刷新,自适应
最近在项目上用layui框架后台iframe版,遇到的一些问题分享: 1.项目的左侧菜单点击对应的子菜单能自动刷新问题. 2.除了在左侧有菜单,还需要在右侧需要一个菜单(跳转到新页面),并且能够伸缩自 ...
- 解决el-tree横向滚动条问题
代码如下 效果如图 仅做下记录,不做过多解释
- view组件的封装是否需要特有模型?
必须需要. 现在接手的老项目,所有自定义组件全部使用的原始的全量数据,作为模型给view用来展示. 结果发现,基本数据的选择错误,需要选择另一个数据作为基本数据,这导致一个很麻烦的问题,需要改动全部的 ...
- Word使用技巧——持续更新
Q1:word 2007 打开后默认显示缩略图而不是文档结构图? A1:三步曲 1)打开word,关闭缩略图,保存并关闭文档 2)重新打开word(此时应该没有显示缩略图),勾选上“文档结构图”,保存 ...
- python+selenium 自动化测试框架-学习记录
本人小白一枚,想着把学习时的东西以博客的方式记录下来,文章中有不正确的地方请大佬多多指点!!共同学习 前期准备 安装python3.selenium.下载对应版本的webdriver:安装所需的第三 ...
- Js 改变时间格式输出格式
朋友看到的方法,非js原生的 自己封装到 function date2str(x,y) { var z={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate( ...
- JavaScript的流程控制语句以及函数
一.流程控制 1. 作用:控制代码的执行顺序 2. 分类 2.1顺序结构:从上到下依次执行代码语句 2.2选择结构: 1. if语句 简单if结构 if(条件表达式){ 表达式成立时执行的代码段 } ...
- 【Java8新特性】面试官:谈谈Java8中的Stream API有哪些终止操作?
写在前面 如果你出去面试,面试官问了你关于Java8 Stream API的一些问题,比如:Java8中创建Stream流有哪几种方式?(可以参见:<[Java8新特性]面试官问我:Java8中 ...