接下来我简单的介绍一下怎么用C语言连接数据库。
- 初始化数据库
- 创建数据库连接
- 执行增删改查语句
- 关闭数据库连接
一、初始化数据库
- // 数据库初始化
- MYSQL mysql;
- MYSQL* ret1 = mysql_init(&mysql);
- if (ret1 == nullptr)
- {
- std::cerr << "init_error" << std::endl;
- exit(-1);
- }
- /*****************
- 返回值:
- 如果没有足够的内存来分配新对象,则为空。
- *****************/
复制代码
二、创建数据库连接
- // 数据库连接
- MYSQL* ret2 = mysql_real_connect(&mysql, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0);
- if (ret2 == nullptr)
- {
- std::cerr << "connect_error" << std::endl;
- exit(-1);
- }
- /*****************
- 参数:
- 1、MYSQL *mysql ===> 创建的数据库变量
- 2、const char *host ===> 主机号, 如果是本地可以用"127.0.0.1"
- 3、const char *user ===> 用户名
- 4、const char *passwd ===> 密码
- 5、const char *db ===> 数据库名
- 6、unsigned int port ===> 端口号
- 7、剩下的两个参数一个置空,一个置0就行
- 返回值:
- 如果没有足够的内存来分配新对象,则为空。
- *****************/
复制代码
三、执行增删改查语句
这个部分需要分成两类:增删改、查。增删改只需要考虑这个语句执行的是否是正常的,但是查询这个操作还需要通过返回值得到查询的结果。
1、增删改 - // 执行增删改
- std::string sql = "insert into user (name, age) values ('wangwu', 19);";
- int ret3 = mysql_query(&mysql, sql.c_str());
- if (ret3)
- {
- std::cerr << "query_error" << std::endl;
- exit(-1);
- }
复制代码
2、查
- 执行查询语句
- 得到结果集
- 得到结果集的行数和列数
- 遍历即可
- // 执行查找语句
- std::string sql = "select * from user;";
- int ret4 = mysql_query(&mysql, sql.c_str());
- if (ret4)
- {
- std::cerr << "query_error" << std::endl;
- exit(-1);
- }
- // 得到结果集
- MYSQL_RES* res = mysql_store_result(&mysql);
- // 得到行数和列数
- int row = mysql_num_rows(res);
- int field = mysql_num_fields(res);
- // 得到列名
- MYSQL_FIELD* fields = mysql_fetch_fields(res);
- for (int i = 0; i < row; i++)
- {
- // 注意,不能直接打印,需要指定里面的name属性
- std::cout << fields[i].name << " ";
- }
- std::cout << "\n";
- // 遍历得到结果集
- MYSQL_ROW line;
- for (int i = 0; i < row; i++)
- {
- line = mysql_fetch_row(res);
- for (int j = 0; j < field; j++)
- {
- std::cout << line[j] << " ";
- }
- std::cout << "\n";
- }
复制代码
四、执行增删改查语句
- // 关闭数据库
- mysql_close(&mysql);
复制代码
cout << “\n”; } - # 四、执行增删改查语句
- [外链图片转存中...(img-9HkkinoN-1733452583128)]
- ```cpp
- // 关闭数据库
- mysql_close(&mysql);
复制代码 |