MySQL+C++

3 篇文章 0 订阅

数据库交互一般流程:

  1. 初始化

    • mysql_init()
      函数声明:MYSQL *mysql_init(MYSQL *mysql)
      功能描述:为mysql_real_connect()分配或初始化一个MYSQL 对象
      返回:一个初始化的 MYSQL* handler
    • mysql_real_connect()
      函数声明:MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
      功能描述:建立数据库连接。host、user、passwd、db、port分别是要连接的数据库ip、用户名、密码、数据库名、端口。host参数如果是NULL"localhost",代表连接的是本机。最后两个参数一般是NULL和0
      返回:如果连接成功,返回一个 MYSQL* connection handler,否则返回NULL
  2. 发出语句并处理

  3. 结果处理

    • mysql_store_result()
      函数声明:MYSQL_RES *mysql_store_result(MYSQL *mysql)
      功能描述:存储query语句返回的结果集
      返回:指向结果集的指针。如果没有结果集返回或引发异常,则返回NULL

    • mysql_fetch_row()
      函数声明:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
      功能描述:检索结果集的下一行
      返回: 下一行的MYSQL_ROW 结构或NULL
      用在mysql_store_result()后面,返回NULL表示没有可检索的下一行;
      用在mysql_use_result()后面,返回NULL表示没有可检索的下一行或有错误出现。

    • mysql_num_fields()
      函数声明:unsigned int mysql_num_fields(MYSQL_RES *result)
      功能描述:返回结果集的列数

  4. 释放资源并关闭数据库连接

    mysql_free_result(res);  //释放一个结果集使用的内存。
    mysql_close(&mysql);	 //关闭一个服务器连接。
    

Example

#include<iostream>
#include<mysql.h>

using namespace std;

MYSQL mysql;
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

bool ConnectDatabase()//连接数据库
{
	//初始化mysql  
	mysql_init(&mysql);  //连接mysql,数据库  //初始化一个MySQL结构
	const char host[] = "localhost"; //主机名
	const char user[] = "root"; //用户名
	const char psw[] = "123456";
	const char db[] = "video"; //数据库名
	const int port = 3306; //端口名
	//返回false则连接失败,返回true则连接成功  
	if (!(mysql_real_connect(&mysql, host, user, psw, db, port, NULL, 0)))
		//中间分别是主机,用户名,密码,数据库名,端口号(可以写默认0或者3306等),可以先写成参数再传进去  
		return false;
	else
		return true;
}
void FreeConnect()//释放资源并关闭数据库连接
{
	mysql_free_result(res);
	mysql_close(&mysql);
}

int main()
{
	if (ConnectDatabase()){
		cout << "数据库连接成功" << endl;
	}
	else
		return -1;
	string query = "show tables;";
	if (!(mysql_query(&mysql, query.c_str())))
		cout << "查询成功" << endl;
	else
		return -1;
		
	res = mysql_store_result(&mysql);//获取结果集
	int num = mysql_num_fields(res);//获取结果集的列数
	cout << "数据有 " << num << " 列" << endl;
	
	MYSQL_ROW row;
	while (row = mysql_fetch_row(res))//获取结果集每一行数据
		cout << row[0] << endl;//因为结果集只有1列,这边只显示row[0]
		
	system("pause");
}

另一个编程例子请移步MySQL小试——数据库检索小案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值