#include #include #include #include #include #include #include #include #include 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 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; }