语言连接
一、下载 二、mysql_get_client_info
三、其他函数 1、mysql_init 2、mysql_real_connect 3、mysql_query 4、mysql_store_result 5、mysql_free_result 6、mysql_num_fields 7、mysql_num_rows 8、mysql_fetch_fields 9、mysql_fetch_row 10、mysql_close
四、示例
一、下载
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
二、mysql_get_client_info
1、函数
2、介绍
mysql_get_client_info 是一个用于获取 MySQL 客户端库版本信息的函数。它返回一个指向以 null 结尾的字符串,该字符串表示 MySQL 客户端库的版本。
3、示例
# include <iostream>
# include <mysql/mysql.h>
int main ( )
{
std:: cout << "mysql版本: " << mysql_get_client_info ( ) << std:: endl;
return 0 ;
}
g++ test. cc - l mysqlclient
三、其他函数
1、mysql_init
mysql_init 是 MySQL C API 中的一个函数,它的主要功能是分配或初始化一个 MYSQL 对象,使其适用于后续的 mysql_real_connect 函数来建立与 MySQL 数据库的连接。它是建立数据库连接的第一步。 参数mysql是一个指向 MYSQL 结构的指针。如果传递 NULL,mysql_init 将分配并初始化一个新的 MYSQL 结构;如果不为 NULL,则该函数将初始化已存在的 MYSQL 结构。 成功时,返回一个指向已初始化 MYSQL 结构的指针。失败时,返回 NULL。失败的原因通常是因为内存不足,无法分配新的 MYSQL 结构。
2、mysql_real_connect
mysql_real_connect 用于建立一个到 MySQL 数据库服务器的连接。在调用 mysql_real_connect 之前,必须调用 mysql_init 来初始化 MYSQL 结构。
参数 说明 mysql 一个指向 MYSQL 结构的指针,该结构在调用 mysql_init 后被初始化 host MySQL 服务器的主机名或 IP 地址。如果为 NULL 或字符串 “localhost”,则假定为到本地主机的连接 user 用于登录数据库的用户名。如果为 NULL,则假定为当前用户 passwd 用户密码。如果为 NULL,则仅对该用户的(拥有空密码字段的)用户表中的条目进行匹配检查 db 数据库名称。如果指定,连接后将选择这个数据库 port MySQL 服务器的端口号。如果为 0,则使用默认端口(通常是 3306) unix_socket 用于连接的 Unix 域套接字或管道的路径。如果为 NULL,则不使用 Unix 套接字 client_flag 用于设置客户端标志的位字段。通常设置为 0,但也可以设置为特定功能的组合
3、mysql_query
mysql_query 用于在已经建立的数据库连接上执行 SQL 语句。成功时,返回 0。失败时,返回非 0 值。
参数 说明 mysql 一个指向已经通过 mysql_real_connect 或类似函数成功连接到 MySQL 服务器的 MYSQL 结构体的指针 stmt_str 要执行的 SQL 语句的字符串。这个字符串应该是一个以空字符 (‘\0’) 结尾的 C 字符串
4、mysql_store_result
mysql_store_result 用于检索由 mysql_query 执行的 SELECT 语句的结果集,并将其存储在 MYSQL_RES 结构中,以便后续逐行处理。使用完后需要调用mysql_free_result来释放与之关联的内存资源,以避免内存泄漏。 成功时,返回一个指向 MYSQL_RES 结构体的指针,该结构体包含了结果集的数据。失败时,返回 NULL。
5、mysql_free_result
mysql_free_result 用于释放由 mysql_store_result 或类似函数返回的结果集所占用的内存。
6、mysql_num_fields
mysql_num_fields 用于获取由 mysql_store_result 或 mysql_use_result 返回的结果集中的字段(列)数量。即函数返回一个无符号整数,表示结果集中的字段数量。
7、mysql_num_rows
mysql_num_rows 用于获取由 mysql_store_result 返回的结果集中的行数。即函数返回值表示结果集中的行数。如果结果集为空或检索结果集时发生错误,返回值可能是 0。
8、mysql_fetch_fields
mysql_fetch_fields 用于从由 mysql_store_result 返回的结果集中检索所有字段(列)的信息。这个函数返回一个指向 MYSQL_FIELD 结构体数组的指针,其中每个结构体都包含了结果集中一个字段的详细信息。 如果结果集为空或发生错误,返回值可能是 NULL。但通常,只要 mysql_store_result 成功返回了一个结果集,mysql_fetch_fields 就会返回一个有效的指针。
9、mysql_fetch_row
mysql_fetch_row 用于从由 mysql_store_result 或 mysql_use_result 返回的结果集中逐行检索数据。 每次调用 mysql_fetch_row 时,它都会返回结果集中的下一行数据,直到没有更多行时返回 NULL。
10、mysql_close
mysql_close 用于关闭先前使用 mysql_init 初始化的数据库连接。在应用程序完成对数据库的操作后,应该调用此函数来释放与连接相关的资源,并确保与 MySQL 服务器的连接被正确关闭。
四、示例
create database conn;
create user connector@localhost identified by '123456' ;
grant all on conn. * to connector@localhost ;
use conn;
create table user (
id int primary key auto_increment ,
name varchar ( 12 )
) ;
# include <iostream>
# include <string>
# include <mysql/mysql.h>
const char * host = "localhost" ;
const char * user = "connector" ;
const char * passwd = "123456" ;
const char * db = "conn" ;
unsigned int port = 3306 ;
int main ( )
{
MYSQL* ml = mysql_init ( nullptr ) ;
if ( ml == nullptr )
{
std:: cerr << "mysql_init error" << std:: endl;
return 1 ;
}
if ( ! mysql_real_connect ( ml, host, user, passwd, db, port, nullptr , 0 ) )
{
std:: cerr << "mysql_real_connect error" << std:: endl;
return 2 ;
}
std:: cout << "mysql_init and mysql_real_connect success" << std:: endl;
std:: string query = "select * from user" ;
int n = mysql_query ( ml, query. c_str ( ) ) ;
if ( n == 0 )
std:: cout << query << " : success" << std:: endl;
else
{
std:: cerr << query << " : error" << std:: endl;
return 3 ;
}
MYSQL_RES* res = mysql_store_result ( ml) ;
if ( res == nullptr )
{
std:: cout << "mysql_store_result: the statement did not return a result set or an error occurred" << std:: endl;
return 4 ;
}
int rowsNum = mysql_num_rows ( res) ;
int fieldsNum = mysql_num_fields ( res) ;
std:: cout << "rowsNum: " << rowsNum << ", fieldsNum: " << fieldsNum << std:: endl;
MYSQL_FIELD* field = mysql_fetch_fields ( res) ;
for ( int i = 0 ; i < fieldsNum; ++ i)
std:: cout << field[ i] . name << "\t" ;
std:: cout << "\n" ;
MYSQL_ROW row;
while ( row = mysql_fetch_row ( res) )
{
for ( int i = 0 ; i < fieldsNum; ++ i)
std:: cout << row[ i] << "\t" ;
std:: cout << "\n" ;
}
mysql_free_result ( res) ;
mysql_close ( ml) ;
return 0 ;
}
运行结果,在最后我进行了snow的插入,所以结果如下。
本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信 本文只是在学习过程中所做的总结,不会涉及过深的概念 创作不易,如果觉得博主写得不错,请点赞、收藏加关注支持一下💕💕💕