C:数据库的通用接口设计
我有一个用于创建与数据库连接的类:
class DBHandler { public: DBHandler(); ~DBHandler(); int connect(); int execQuery( string query); string getField( int row,int col); }; 现在有另一个类用于从数据库中获取一些信息, class DBManager { public: DBManager(); ~DBManager(); //Approach 1 string getUsername() { //create a query here and use object of DBHandler class to execute it. } //Approach 2 string getUsername (struct QueryDetails& qDetails) { //create query using fields of structure and execute the query using DBHandler class. } }; 现在问题是: 1)我应遵循哪种方法: > A)如果我使用方法1,那么我需要硬编码查询. 2)除了这两个通用之外,还有更好的解决方案吗? PS:结构的定义 struct QueryDetails { string tableName; vector<string> colList; ... }; 解决方法
您的问题非常广泛,您提供的要素不允许向您提出客观的最佳答案.
您的方法1具有以下优点: >这是一种强大而安全的方法:查询是在了解相关对象的情况下编写的 主要的不便之处在于,您与数据库紧密相连.如果明天您从PostGres更改为其他内容,则必须重写每个查询. 您的方法2具有以下优点: >非常灵活 不便之处在于,这种灵活性会给维护带来很多风险:您无法确定客户端是否发送了正确的查询,并且很难评估数据库布局更改的影响评估. 最后,由您决定哪一个更适合您的需求. 我个人倾向于支持1.但这是主观的,我还是会引入一个额外的层来使应用程序代码更加独立于实现数据库访问的数据库系统. 但是,根据您的需要,更大的灵活性可能是有利的.例如,如果您的类实际上是其他calsses获取自己的数据的中间层,那么方法2可能是最佳选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |