我正在编写一个涉及MySQL数据库的应用程序,我想在一个(或更多,将来)特定文件中进行所有与数据库相关的操作。我需要将数据库连接ID导出到其他模块,以便他们可以使用DB模块的服务。
理想情况下,这将是。 (在db.h中)
typedef ????? dbconn_t
在其他文件中
dbconn_t = db_newconnection(...);
数据库连接的MySQL类型称为MYSQL,所以我倾向于编写
typedef MYSQL *dbconn;
但要做到这一点,我需要在我自己的db.h中包含mysql.h,将大量函数和其他类型导出到项目的其余部分。
我想到了一些解决方案:
导出一个int类型并保留一个表,用于将整数映射到MYSQL指针
在数据库处理代码
两者看起来都很糟糕。有什么想法可以帮到你吗?
答案 0 :(得分:2)
您可以将数据ID封装到结构类型中。
例如,在您的私有标题中,您可以使用
struct dbconn {
int id;
};
在标题中,您将其导出为
struct dbconn;
typedef struct dbconn *dbconn_t;