C++中有一个专门存放string类型的username和password的名为saving的文本文件,现在需要为每个username创建表并用指针将两者连接起来,然后可以完成对表进行增删查改的功能
时间: 2024-02-22 18:56:53 浏览: 63
c++实现链表增删改查
5星 · 资源好评率100%
下面是一个简单的示例代码,可以实现您所描述的基本功能:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <mysqlx/xdevapi.h>
using namespace std;
using namespace mysqlx;
struct User { // 定义 User 结构体,用于存储用户信息
string username;
string password;
string table_name;
};
vector<User> users; // 用于存储所有用户信息
int main() {
string db_name = "test"; // 数据库名
string db_user = "root"; // 数据库用户名
string db_password = "password"; // 数据库密码
// 读取保存用户信息的文件
ifstream infile("saving.txt");
string line;
while (getline(infile, line)) {
User user;
user.username = line.substr(0, line.find(','));
user.password = line.substr(line.find(',') + 1);
user.table_name = "table_" + user.username; // 为每个用户创建对应的表
users.push_back(user);
}
// 连接数据库
Session session(SessionOption::USER, db_user, SessionOption::PWD, db_password);
session.getDefaultSchema().createCollection("users"); // 创建 users 集合
// 为每个用户创建表并将用户信息插入到 users 集合中
for (int i = 0; i < users.size(); i++) {
Table table = session.getDefaultSchema().createTable(users[i].table_name);
table.addColumn("id", mysqlx::Datatype::INT, 11);
table.addColumn("name", mysqlx::Datatype::VARCHAR, 50);
table.addColumn("address", mysqlx::Datatype::VARCHAR, 100);
// 将用户信息插入到 users 集合中
Row row = Row::from(users[i].username, users[i].password, users[i].table_name);
session.getDefaultSchema().getCollection("users").add(row);
}
// 对用户表进行增删查改操作
for (int i = 0; i < users.size(); i++) {
Table table = session.getDefaultSchema().getTable(users[i].table_name);
// 插入数据
Row row = Row::from(1, "Tom", "Beijing");
table.insert("id", "name", "address").values(row).execute();
// 查询数据
Result result = table.select("*").execute();
while (result.hasData()) {
cout << result.get(0).getInteger() << ", "
<< result.get(1).getString() << ", "
<< result.get(2).getString() << endl;
result.next();
}
// 更新数据
table.update().set("name", "Jerry").where("id = :id").bind("id", 1).execute();
// 删除数据
table.remove().where("id = :id").bind("id", 1).execute();
}
return 0;
}
```
在上面的示例代码中,我们首先读取保存用户信息的文件,然后为每个用户创建对应的表,并将用户信息插入到一个名为 `users` 的集合中。接着,我们可以对每个用户的表进行增删查改操作,在此处只是简单地示范了插入、查询、更新和删除操作。
请注意,上述代码仅为示例代码,实际使用时需要根据具体需求进行修改和完善。另外,为了简化代码,上述示例并未考虑错误处理和安全性问题。
阅读全文