C++实现数据库的增删改查功能demo

前言

最近在一家公司实习,入职当天给了两个小demo去完成,第一个是用c++实现web前端的http协议暴露,另一个就是用c++实现数据库的连接以及对应的增删改查功能,话不多说,上代码。

1.准备条件

1.1创建数据表

User表结构如下:

数据类型字段解 释
intid序号
stringusername用户名
intpassword密码
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(18) NOT NULL,
  `password` int(18) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

1.2配置项目

1、打开项目属性
在这里插入图片描述
2、编辑包含目录,关闭sdl检查
3、添加 Mysql的include目录路径,点击确定,应用
在这里插入图片描述

2.连接数据库

2.1 创建UserManager.h文件

用于定义和声明一些常量和方法,每段代码都有注释,如下

#pragma once //防止头文件多次加载
#include <mysql.h>//用于数据库连接
#include <iostream>//用于读写数据流
#include <string>//字符串
#include<vector>//vector容器

using namespace std;//标准命名空间

typedef struct User {
	int id;
	string username;
	int password;
}User;//映射数据表User的结构
class UserManager
{
	UserManager();//构造函数,用于创建实例化后的对象,默认调用
	~UserManager();//析构函数,用来销毁该实例化后的对象,由系统调用
public:
	static UserManager* GetInstance() { //单例模式
		static UserManager UserManager;
		return &UserManager;
	}
public: //定义增删改查的函数声明,其中&为引用符号,传入的是该对象的地址,便于直接操作该对象
	bool insert_user(User& user);
	bool delete_user(User& user);
	bool update_user(User& user);
	vector<User> query_user(string condition = "");
private://定义一些常量
	MYSQL* con;
	const char* host = "127.0.0.1";//主机IP地址
	const char* user = "root";//用户名
	const char* pw = "123456";//密码
	const char* database_name = "test";//数据库名称
	const int port = 3306;//端口号
};

2.2 创建UserManager.cpp文件

#include "UserManager.h" //引入头文件
using namespace std;//标准命名空间

//实现头文件中声明的构造函数
UserManager::UserManager() {
	con = mysql_init(NULL);//初始化连接
	//设置字符编码
	mysql_options(con, MYSQL_SET_CHARSET_NAME, "GBK");
	//连接数据库
	if (!mysql_real_connect(con, host, user, pw, database_name, port, NULL, 0))
	{
		std::cout << "Failed to connect with database";
		exit(1);
	}
}
//实现头文件中声明的析构函数
UserManager::~UserManager() {
	mysql_close(con);
}
//增加用户
bool  UserManager::insert_user(User& user)
{
	char sql[8192];//声明字符数组
	sprintf_s(sql, "insert into user(id,username,password) values (%d,'%s',%d)", user.id, user.username.data(), user.password);//sql语句
	if (mysql_query(con, sql))//执行sql语句
	{
		fprintf(stderr, "Failed to insert data,Error:%s\n", mysql_error(con));
		return false;
	}
	return true;
}
//删除用户
bool UserManager::delete_user(User& user)
{
	char sql[8192];
	sprintf_s(sql, "	DELETE FROM  user WHERE id=%d", user.id);
	if (mysql_query(con, sql))
	{
		fprintf(stderr, "Failed to delete data,Error:%s\n", mysql_error(con));
		return false;
	}
	return true;
}
//修改用户
bool UserManager::update_user(User& user)
{
	char sql[8192];
	sprintf_s(sql, "	UPDATE user SET  username='%s',password=%d WHERE id=%d",
		user.username.data(), user.password,user.id);
	if (mysql_query(con, sql))
	{
		fprintf(stderr, "Failed to updata data,Error:%s\n", mysql_error(con));
		return false;
	}
	return true;

}
//查询用户
vector<User> UserManager::query_user(string condition)
{
	vector<User> userList;
	char sql[8192];
	sprintf(sql, "	SELECT * FROM user %s",condition.c_str());
	if (mysql_query(con, sql))
	{
		fprintf(stderr, "Failed to select data,Error:%s\n", mysql_error(con));
		return {};
	}
	MYSQL_RES* res = mysql_store_result(con);
	MYSQL_ROW row;
	while ((row = mysql_fetch_row(res)))
	{
		User user;
		user.id = atoi(row[0]);
		user.username = atoi(row[1]);
		user.password = atoi(row[2]);
		userList.push_back(user);
	}
	for (int i = 0; i < userList.size(); i++)
	{
		cout << userList[i].id << "," << userList[i].username << "," << userList[i].password << endl;
	}
	return userList;
}

3.运行代码

创建一个main.cpp文件,测试代码如下

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

int main() {
	//User的插入
	User user1{1,"测试",123};//实例化一个User对象
	UserManager::GetInstance()->insert_user(user1);//调用插入方法
}

4.源代码

点这里获取

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!关于在C++中进行数据库增删改查操作,可以使用数据库操作接口来实现。常见的数据库操作接口有ODBC和MySQL Connector/C++等。下面给出一个简单的示例代码,以MySQL数据库为例: ```cpp #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/statement.h> #include <cppconn/prepared_statement.h> #include <cppconn/resultset.h> int main() { // 创建数据库连接 sql::mysql::MySQL_Driver *driver; sql::Connection *con; driver = sql::mysql::get_mysql_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "username", "password"); // 选择数据库 con->setSchema("database_name"); // 执行增删改查操作 sql::Statement *stmt; stmt = con->createStatement(); // 插入数据 stmt->execute("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')"); // 更新数据 stmt->execute("UPDATE table_name SET column1 = 'new_value' WHERE condition"); // 删除数据 stmt->execute("DELETE FROM table_name WHERE condition"); // 查询数据 sql::ResultSet *res; res = stmt->executeQuery("SELECT * FROM table_name"); while (res->next()) { // 处理查询结果 std::cout << "column1: " << res->getString("column1") << std::endl; std::cout << "column2: " << res->getString("column2") << std::endl; } // 释放资源 delete res; delete stmt; delete con; return 0; } ``` 请注意,这只是一个简单的示例代码,实际使用时需要根据具体的数据库和表结构进行相应的修改。另外,您需要根据实际情况包含相应的数据库驱动和头文件,并且提供正确的数据库连接信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Double Handsome

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值