MySQL使用C语言查询

MySQL使用C语言查询

常用api

MYSQL *mysql_init(MYSQL *mysql)
    功能: 分配或初始化MYSQL对象。
    参数:mysql
    待初始化的MYSQ对象,将对象地址传入,NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。
    用法实例:
    MYSQL mysql;
    mysql_init(&mysql); // 或者MYSQL*mysql = mysql_init(NULL);

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)
	功能:尝试与运行在主机上的MySQL数据库引擎建立连接
	参数:mysql 前面一个函数的返回的mysql实例句柄。host 要连接的数据库的主机,可以是ip地址或主机名。user 表示登录数据库的用户名,passwd 登录的密码。db 就是访问的数据库。port: mysql的tcp/ip端口默认是3306。unix_socket 表示连接类型。client_flag 暂时为0即可。(一般win下后两个参数为NULL,0)

int mysql_query(MYSQL *mysql,const char *query)
	功能:根据query查询语句执行查询数据库
	参数: mysql: mysql的实例。query: 查询语句字符串可以是 增删修查
	返回值: 成功返回0,失败返回非0

MYSQL_RES *mysql_store_result(MYSQL *mysql)
	功能:得到查询的结果集,对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK 		TABLE等),必须调用mysql_store_result()或mysql_use_result()
	参数:mysql:前面的mysql实例
	返回值:成功返回MYSQL_RES结构体,该结构体中保存查询的结果

unsigned int mysql_num_fields(MYSQL_RES *result)
	参数:前面返回的结果地址;
	返回结果集中的行数。
        
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
	功能:mysql_store_result得到的结果结构中提取一行,并把它放到一个行结构中。
	返回值:下一行的一个MYSQL_ROW结构当数据用完或发生错误时返回null

void mysql_free_result(MYSQL_RES *result)
	释放由mysql_store_result()、mysql_use_result()、mysql_list_dbs()等为结果集分配的内存。完成对结果集的操作后,必须调用mysql_free_result()释放结果集使用的内存。

void mysql_close(MYSQL *mysql)
	关闭前面打开的连接。

综上 返回值 若是指针,NULL表示失败, 其他表示成功

​ 若是整形,0表示成功,其他表示失败;

示例

#include "mysql.h"
#include<iostream>
using namespace std;

int main(){   
   MYSQL sql;
   mysql_init(&sql);
   MYSQL_ROW row;

   if (mysql_real_connect(&sql, "localhost", "root", "root", "mydatabase", 3306, NULL, 0))  //连接到mysql
	{
		cout << "\n\t-----MySQL已连接----" << endl;
	}
	
	if (!mysql_query(&sql, "select * from student"))   //若查询成功返回0,失败返回随机数
	{
		cout << "\n\t  ----查询成功----" << endl;
	}
 
	MYSQL_RES * rs = mysql_store_result(&sql);    //将查询到的结果集储存到result中
 
	int num = mysql_num_fields(rs);        //将结果集列数存放到num中
 
	while ((row = mysql_fetch_row(rs)))  //遇到最后一行,则中止循环
	{
		for (int i = 0; i < num; i++)         //利用for循环,输出该行的每一列
		{
			cout << row[i]<< "\t";    //row是MYSQL_ROW变量,可以当做数组使用,i为列数
		}
		cout << endl;
	}
	mysql_free_result(rs);     //释放结果集所占用的内存
	mysql_close(&sql);          //关闭与mysql的连接

   system("pause");
   return 0;
}

g++编译命令

g++ main.cpp -o main -I D:/compiler/mysql-8.0.27-winx64/include libmysql.dll

需要将lib下的 libmysql.dll文件放到项目文件夹下;

g++ main.cpp -o main        直接将mian.cpp编译成main.exe

-L 要链接的库所在目录

-l 指定链接时需要的动态库,隐含命名规则,即在前加lib,在后加.dll确定库文件名

例:libmysql.dll

-lmysql  或直接用libmysql.dll

-I 要链接的头文件目录

示例:

g++ main.cpp -o main -I D:/compiler/mysql-8.0.27-winx64/include libmysql.dll

 
posted @ 2022-03-05 17:58  awei666  阅读(458)  评论(0编辑  收藏  举报