123 lines
4.6 KiB
C++
123 lines
4.6 KiB
C++
#include <mysql_driver.h>
|
|
#include <mysql_connection.h>
|
|
#include <cppconn/prepared_statement.h>
|
|
#include <cppconn/resultset.h>
|
|
#include <cppconn/statement.h>
|
|
#include <cppconn/exception.h>
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <random>
|
|
|
|
std::string generateRandomString(size_t length)
|
|
{
|
|
const std::string CHARACTERS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
|
|
|
std::random_device dev;
|
|
std::mt19937 rng(dev());
|
|
std::uniform_int_distribution<> dist(0, CHARACTERS.size() - 1);
|
|
|
|
std::string random_string;
|
|
for (size_t i = 0; i < length; ++i) {
|
|
random_string += CHARACTERS[dist(rng)];
|
|
}
|
|
|
|
return random_string;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
try
|
|
{
|
|
// 数据库连接配置
|
|
std::string server = "tcp://127.0.0.1:3306";
|
|
std::string username = "root";
|
|
std::string password = "Hj57471000";
|
|
std::string database = "hjems";
|
|
|
|
// 创建连接
|
|
sql::mysql::MySQL_Driver *driver;
|
|
driver = sql::mysql::get_mysql_driver_instance();
|
|
std::unique_ptr< sql::Connection > con(driver->connect(server, username, password));
|
|
|
|
// 设置为使用指定数据库
|
|
con->setSchema(database);
|
|
|
|
// 准备SQL查询语句
|
|
//std::string sql = "SELECT uid, uname, upasswd, usalt, email, mobile1, mobile2, memo FROM tbl_user WHERE uid = ?";
|
|
std::string sql = "SELECT uid, uname, upasswd, usalt, email, mobile1, mobile2, memo FROM tbl_user WHERE uid LIKE ?";
|
|
|
|
// 创建预编译的prepared statement
|
|
std::unique_ptr< sql::PreparedStatement > pstmt(con->prepareStatement(sql));
|
|
|
|
// 绑定参数
|
|
//pstmt->setString(1, "hkc"); // 替换为你要查询的用户名
|
|
|
|
// 绑定参数,使用 '%' 作为通配符进行模糊匹配
|
|
// 例如,搜索以 'user' 开头的所有用户名
|
|
std::string pattern = "user%"; // 替换为你要查询的模式
|
|
pstmt->setString(1, pattern);
|
|
|
|
// 执行查询
|
|
std::unique_ptr< sql::ResultSet > res(pstmt->executeQuery());
|
|
|
|
// 处理结果集
|
|
while (res->next()) {
|
|
// 假设username和password都是字符串类型
|
|
std::string user = res->getString("uname");
|
|
std::string pass = res->getString("upasswd");
|
|
std::string usalt = res->getString("usalt");
|
|
std::string email = res->getString("email");
|
|
std::string mobile1 = res->getString("mobile1");
|
|
std::string mobile2 = res->getString("mobile2");
|
|
std::string memo = res->getString("memo");
|
|
|
|
std::cout << "Username: " << user << ", Password: " << pass << std::endl;
|
|
std::cout << "Salt: " << usalt << ", email: " << email << std::endl;
|
|
std::cout << "mobile1: " << mobile1 << ", mobile2: " << mobile2 << std::endl;
|
|
std::cout << "Memo: " << memo << std::endl;
|
|
}
|
|
|
|
|
|
// 插入新用户记录的 SQL 语句
|
|
std::string insertSql = "INSERT INTO tbl_user (uid, uname, upasswd, usalt,memo) VALUES (?, ?, ?,?,?)";
|
|
|
|
// 创建预编译的 prepared statement 对象
|
|
std::unique_ptr<sql::PreparedStatement> insertStmt(con->prepareStatement(insertSql));
|
|
|
|
// 绑定插入数据的参数
|
|
size_t passwordLength = 12; // 密码长度不超过12个字符
|
|
std::string newUid = generateRandomString(passwordLength);
|
|
//const std::string newUid = "new_uid"; // 替换为新用户的用户名
|
|
const std::string newSalt = "1C915F2C045EA7628E3CF170BFA59F51"; // 替换为新用户的密码
|
|
const std::string newUser = "new_username"; // 替换为新用户的用户名
|
|
const std::string newPassword = "new_password"; // 替换为新用户的密码
|
|
const std::string newMemo = "新备注信息";
|
|
|
|
insertStmt->setString(1, newUid);
|
|
insertStmt->setString(2, newUser);
|
|
insertStmt->setString(3, newPassword);
|
|
insertStmt->setString(4, newSalt);
|
|
insertStmt->setString(5, newMemo);
|
|
|
|
// 执行插入操作
|
|
int rowsAffected = insertStmt->executeUpdate();
|
|
|
|
// 检查插入操作是否成功
|
|
if (rowsAffected > 0)
|
|
{
|
|
std::cout << "New user inserted successfully." << std::endl;
|
|
} else {
|
|
std::cout << "No rows affected during insert operation." << std::endl;
|
|
}
|
|
|
|
// 关闭连接
|
|
con->close();
|
|
}
|
|
catch (sql::SQLException &e) {
|
|
std::cerr << "SQLException: " << e.what();
|
|
std::cerr << " (MySQL error code: " << e.getErrorCode();
|
|
std::cerr << ", SQLState: " << e.getSQLState() << " )" << std::endl;
|
|
}
|
|
|
|
return 0;
|
|
} |