MySQL数据库访问(C/C++)
参数:
- mysql:mysql句柄,由
mysql_init()初始化的连接句柄指针。 - host:主机名 (如 "localhost"或"127.0.0.1")。
- user:用户名,如果为NULL,表示使用当前登录用户名。
- passwd:用户密码。如果为NULL,表示不使用密码。
- db:要使用的默认数据库名称,可以为NULL。
- port:mysql服务的端口号,如果为0,使用默认端口(3306)。
- unix_socket:套接字路径,暂不关心,设置为NULL,表示使用默认套接字。
- client_flag:标志位,很少用到,暂时不关系,设置为0即可。
返回值:
- 成功:返回原来的mysql句柄。
- 失败:返回nullptr。
代码示例:
代码语言:javascript
AI代码解释
#include <iostream>
#include <mysql/mysql.h>
#define HOST "localhost" //或#define HOST "120.0.0.1"
#define USER "root"
#define PASSWORD "XyK@71986582"
#define DB "conn"
#define PORT 3306
main()
{
//......
mysql = mysql_real_connect(mysql,HOST,USER,PASSWORD,DB,PORT,nullptr,0);
if(mysql==nullptr)
{
std::cout<<"mysql_real_connect fail"<<std::endl;
return 1;
}
//......
return 0;
}
在实际开发中最好不要用root用户访问。
设置客户端的字符集
在连接数据库后要保持客户端与mysqld的字符集一致,要不然会出现乱码。通常都统一设为utf8。
代码示例:
代码语言:javascript
AI代码解释
mysql_set_character_set(mysql,"utf8");
实参mysql是由 mysql_init() 初始化的连接句柄指针。
选择需要操作的数据库
在做连接时已经选好了现在就不用选,只是考虑到中途需要换其他库的情况。
代码语言:javascript
AI代码解释
mysql_select_db(mysql,"conn");
conn为一个准备好的数据库的库名。
执行sql语句(增删改查)
使用
int mysql_query(MYSQL*, const char*)
其中参数为mysql句柄和SQL语句,SQL语句以字符串的形式传入。成功返回0,否则返回非0。
以增为例,如下:
代码语言:javascript
AI代码解释
std::string insert1 = "insert into stu values(null,'张三',18,187562354)";
n = mysql_query(mysql, insert1.c_str());
if (n != 0)
{
std::cout << "mysql_query fail" << std::endl;
return 1;
}
增删改都只要sql语句执行成功,数据库中的时间就发生改变了,没有反馈结果。而查询是不一样的,因为首先执行语句成功,结果在服务器里边,需要把它保存到本地进行访问。
数据查询流程:
- 使用sql语句查询成功后把查询结果保存到本地(获取结果集)
- 获取查询结果集的结果条数
- 遍历结果集
- 释放结果集的空间
数据查询结果是在服务器端的,我们需要把它保存到本地内存才能进行访问。使用
MYSQL_RES* mysql_store_result(MYSQL*) 返回值为MYSQL_RES*类型,是一个结构体类型的指针,里面保存了查询结果和相关属性。其中mysqld把所有查询结果都当做字符串类型给我们返回。我们可以把结果当做char* [ ][ ](或char** []),即储存char*的二维数组
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)