MySQL 的 C/C++ API,用 C++玩数据库的老朋友都不陌生。连接、查询、事务、结果集,全都照顾得挺周到,接口也不复杂。想查点数据,用mysql_query()搞定;想要事务控制,mysql_commit()、mysql_rollback()直接上。用熟了之后,写数据库操作像写普通逻辑一样顺。
连接的逻辑挺直白,先来个mysql_init(),mysql_real_connect()拉上 MySQL,想断了就mysql_close()。和 Socket 连法有点像,配合起来也快。
查数据就用mysql_query(),通过mysql_store_result()或mysql_use_result()结果。内存不够?用mysql_use_result()省点空间;要灵活就上mysql_fetch_row()或mysql_fetch_assoc(),搞成键值对那种更好用。
碰上大批量数据或复杂业务,预语句就派上用场了。mysql_stmt_prepare()配mysql_stmt_bind_param()、mysql_stmt_execute(),跑得快还安全。你要是经常和表单打交道,强烈建议用。
事务控制也挺完整的,像mysql_autocommit()、mysql_commit()、mysql_rollback()都用得上,做订单那类业务少不了它。多线程也不是问题,每个线程一个MYSQL结构体就行,线程安全靠你管。
还有一点别忽略了——性能调优。用mysql_options()设置超时、字符集之类的,想同时执行多语句,也可以用MYSQL_OPTION_MULTI_STATEMENTS_ON开一下开关。哦对了,游标也支持,大型结果集蛮方便。
如果你之前用过 Java 的 JDBC 或 ODBC API,MySQL 的这个 C/C++接口显得有点“底层”,但好处是你能完全掌控细节。配合项目做底层封装,再暴露给业务逻辑,结构会清晰多。
如果你想看看相关用法对比,可以顺便逛下这些:
,这套 API 对搞底层、追性能的人来说,还是挺有用的。你要是写中间件、数据库工具、或者嵌入式系统的客户端,不妨深入研究一下。