li6185377 / LKDBHelper-SQLite-ORM

全自动的插入,查询,更新,删除, an automatic database operation thread-safe and not afraid of recursive deadlock
MIT License
1.21k stars 288 forks source link

多用户切换如何存储的问题请教 #133

Closed DeftMKJ closed 5 years ago

DeftMKJ commented 5 years ago

有个场景,一个模型类,它是存储浏览记录的,需要记录未登录状态下的,用户登录态下的,用户可能有A,B,C等很多用户登录。 如果模型类重载 +(LKDBHelper )getUsingLKDBHelper { static LKDBHelper db; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ db = [[LKDBHelper alloc]initWithDBName:@"xxxuidxxx"]; }); return db; } 比如一进来的时候根据非登录状态创建一个单例数据库操作对象,如果登录的时候再次获取还是之前的单例,现在有两种操作,一种是同一个数据库下建不同uid的表,另一种是创建另一个数据库存储。

如果是同一个数据库下建不同的表,是不是只要在存储的Model给上一个根据uid关联的表名即可,如下 model.db_tableName = uidTableName 但是感觉这些场景切换不同数据库更合理些。 切换数据库是不是可以直接调用

您有什么好的建议针对这种场景么?

li6185377 commented 5 years ago

同库不同表就好了。 有些时候要进行不同用户的数据操作,不在一个数据库,就只能代码层去操作了

DeftMKJ commented 5 years ago

同库不同表下面这个方法就不行了吧

li6185377 commented 5 years ago

嗯, 或者直接重载对应 Model 的 getTableName 方法

DeftMKJ commented 5 years ago

如果是不同库的话貌似重载getUsingLKDBHelper该方法不行了吧,只会根据第一次的路径创建个数据库管理对象。 除了(void)setDBName:(NSString *)fileName;用该方法指定不同db名称切换数据库并创建,还有其他方式不同库的场景么?