>데이터 베이스 >MySQL 튜토리얼 >MySQL学习笔记_12_Linux下C++/C连接MySQL数据库(二)--返回数据的_MySQL

MySQL学习笔记_12_Linux下C++/C连接MySQL数据库(二)--返回数据的_MySQL

WBOY
WBOY원래의
2016-06-01 13:18:03990검색

Linux学习笔记

bitsCN.com

Linux下C++/C连接MySQL数据库(二)

--返回数据的SQL

引:

返回数据的SQL是指通过查询语句从数据库中取出满足条件的数据记录

从MySQL数据库值哦功能检索数据有4个步骤:

1)发出查询

2)检索数据

3)处理数据

4)整理所需要的数据

 

用mysql_query()发出查询,检索数据可以使用mysql_store_result()或mysql_use_result(),取决与怎样检索数据,接着是调用mysql_fetch_row()来处理数据,最后,还必须调用mysql_free_result()以允许MySQL进行必要的整理工作。

1、一次提取所有数据

MYSQL_RES *mysql_store_result(MYSQL * connection);//成功返回结构体指针,失败返回NULL	my_ulonglong mysql_num_row(MYSQL_RES * result);//减速实际返回的行数	MYSQL_ROW mysql_fetch_row(MYSQL_RES * result);//从mysql_store_result()中得到结果的结构体,并从中检索单个行,当没有更多的数据,或者出错时,返回NULL	void mysql_free_result(MYSQL_RES * result);//使mySQL数据库整理分配的对象,关闭连接.

示例:

#include <iostream>#include <fstream>#include <cstdlib>#include <mysql/mysql.h>using namespace std;void mysql_err_function(MYSQL * connection);int main(){	MYSQL * connection;	connection = mysql_init(NULL);	if (!connection)	{		mysql_err_function(connection);	}    connection = mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0);	if (!connection)	{		mysql_err_function(connection);	}	cout << "Connection to MySQL Server is Success..." << endl;	string query;	getline(cin,query);	int res = mysql_query(connection,query.c_str());	if (res)	{		mysql_err_function(connection);	}    MYSQL_RES * my_res = mysql_store_result(connection);	cout << "Retrieved " << mysql_num_rows(my_res) << "rows" << endl;	MYSQL_ROW sqlrow;	while ((sqlrow = mysql_fetch_row(my_res)))	{		cout << "Fetched data..." << endl;	}	mysql_free_result(my_res);	mysql_close(connection);	cout << "Connection to MySQL Server is closed!" << endl;	return 0;}void mysql_err_function(MYSQL * connection){	if (mysql_errno(connection))	{		cout << "Error " << mysql_errno(connection) << " : "		<< mysql_error(connection) << endl;		exit(-1);	}}

2、一次提取一行数据,用于处理了大量的数据集

MYSQL_RES *mysql_use_result(MYSQL * connection);  //成功返回结果集,失败返回NULL 

一次取全部数据增加了网络负载,增加了时延,但是可以保证数据的完整性。

示例:

#include <iostream>#include <cstdlib>#include <mysql/mysql.h>using namespace std;void mysql_err_function(MYSQL * connection);int main(){	MYSQL * connection;	connection = mysql_init(NULL);	if (mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0))	{		cout << "Connection to MySQL Server is Succeed..." << endl;		string query;		getline(cin,query);		int res = mysql_query(connection,query.c_str());		if (res)		{			mysql_err_function(connection);//mysql_err_function()实现代码参考上例		}		else		{			MYSQL_RES * my_res = mysql_use_result(connection);            if (my_res)			{				MYSQL_ROW sqlrow;				while ((sqlrow = mysql_fetch_row(my_res)))				{					cout << "Fetching the Data..." << endl;				}				mysql_free_result(my_res);			}			else			{				mysql_err_function(connection);			}		}		mysql_close(connection);		cout << "Connection to MySQL Server is Closed!" << endl;	}	else	{		mysql_err_function(connection);	}}
bitsCN.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.