為簡化 C/C++ 操作 MySQL 預處理語句,封裝 `MYSQL_STMT` 相關 API,支援參數綁定、結果集綁定、異常拋出,維護 C 結構體與資料表欄位的映射關係。
struct mysql_parm {
std::string host, user, password, database, unixsock;
};
class DBMysql; // 連線管理類(略)
class DBSTMT {
DBSTMT(const DBSTMT&); // 禁用拷貝
DBSTMT& operator=(const DBSTMT&); // 禁用賦值
MYSQL_STMT* stmt_;
public:
DBSTMT(const char* query, DBMysql& mysql); // 建立預處理語句
void execute() { // 無參數執行
if (mysql_stmt_execute(stmt_))
throw mysql_stmt_error(stmt_);
}
void execute(MYSQL_BIND* bind) { // 綁定結果集執行
if (mysql_stmt_execute(stmt_))
throw mysql_stmt_error(stmt_);
if (mysql_stmt_bind_result(stmt_, bind))
throw mysql_stmt_error(stmt_);
if (mysql_stmt_store_result(stmt_))
throw mysql_stmt_error(stmt_);
}
// 可擴展:bind_param、fetch 等封裝
};