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 对搞底层、追性能的人来说,还是挺有用的。你要是写中间件、数据库工具、或者嵌入式系统的客户端,不妨深入研究一下。