【问题标题】:ormlite, allow a single record in a tableormlite,允许表中的单个记录
【发布时间】:2015-09-09 08:25:49
【问题描述】:

我想知道是否有办法强制一个表只有一条记录。我的用例是我一次只允许一个用户登录应用程序,并覆盖该唯一记录(如果有的话)。 我知道如果只允许 1 个项目,它就失去了拥有数据库的意义。但是我还有其他行为正常的表(多行),只有 logged-in-user table 需要这个,我不想只为这种情况使用另一个持久化方案。

任何提示如何实现这一点?谢谢

【问题讨论】:

  • I know it defeats the point of having a database if only 1 item is allowed. 确实如此。为什么不将用户存储在其他地方?

标签: android android-sqlite ormlite


【解决方案1】:

我想知道是否有办法强制一个表只有一条记录。

数据库 的角度或通过 ORMLite 没有办法,但有很多方法可以在自己的代码中实现。

想到的一种方法是创建一个 LoggedIn 表,其中包含一行。然后,您可以对表中的行进行某种条件更新。

类似的东西(在伪代码中):

use the UpdateBuilder to make a conditional update:
    like: UPDATE LoggedIn SET user = my-user-name WHERE user IS NULL
refresh the logged-in entity
if my-user-name.equals(loggedIn.getUser()) then
    I'm logged in and can continue
else
    I can't login because someone beat me to it.

此方法的一个技巧是您需要稍后在用户注销时将用户设置回 null。如果应用程序崩溃,那么您将需要以某种方式重置。也许某种登录超时?您提到了 Android,所以也许您可以在启动时清除已登录的表,除非这是一个远程数据库。

希望这能给你一些想法。

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多