如何在Android Studio中使用sqlite为特定帐户创建表格?

时间:2018-11-26 19:30:04

标签: android android-studio android-sqlite facebook-sdk-4.0

我创建了一个表,使用Sqlite在Android Studio中存储数据。我使用Facebook SDK通过Facebook创建一个帐户,并为该帐户存储一些应用程序数据(而不是Facebook数据),然后显示它。但是当我注销并使用另一个帐户再次登录时,以前的数据仍然存在。

我想为不同的帐户存储不同的数据,因此当用户再次登录时,他的数据将在那里。

问题是:该怎么做?我是否应该创建另一个表来存储Facebook帐户详细信息?如果是,那么如何将数据表与特定帐户关联?

1 个答案:

答案 0 :(得分:0)

要相对简单地执行此操作,但又没有那么多的安全性,请在表格中添加一列来保存(或代表)该帐户。当您访问数据时,包含一个条件(WHERE子句),该条件仅选择该帐户的行。

请考虑以下内容:-

DROP TABLE IF EXISTS fb_account_data_simple;
CREATE TABLE IF NOT EXISTS fb_account_data_simple (_id INTEGER PRIMARY KEY, fb_data TEXT, fb_account TEXT);
INSERT INTO fb_account_data_simple (fb_data, fb_account) VALUES
    ('Face Book Data 001','FRED'),
    ('Face Book Data 002','FRED'),
    ('Face Book Data 001','MARY'),
    ('Face Book Data 003','MARY'),
    ('Face Book Data 004','MARY'),
    ('Face Book Date 003','FRED');
;
SELECT * FROM fb_account_data_simple WHERE fb_account = 'MARY';

这个;

  • 创建一个名为 fb_account_data_simple 的表,该表具有两列,第一列代表数据,第一列代表脸书帐户名。
  • 然后,每个帐户向3行加载6行数据。
  • 最后,它只提取名为MARY的帐户的行,结果是:-

enter image description here

但是,由于多次存储相同的帐户名,上述内容未标准化。

规范化版本将具有该帐户的表和主表中引用该帐户的列。

例如,考虑以下内容:-

DROP TABLE IF EXISTS fb_account;
CREATE TABLE IF NOT EXISTS fb_account (_id INTEGER PRIMARY KEY, account TEXT);
INSERT INTO fb_account (account) VALUES
    ('FRED'), -- will very likely have an _id value of 1 automatically generated by SQLite
    ('MARY')  -- will very likely have an _id value of 2 automatically assigned by SQLite
;
DROP TABLE IF EXISTS fb_data;
CREATE TABLE IF NOT EXISTS fb_data (_id INTEGER PRIMARY KEY, fb_data TEXT, account_reference INTEGER);
INSERT INTO fb_data (fb_data, account_reference) VALUES
    ('Face Book Data 001',1),
    ('Face Book Data 002',1),
    ('Face Book Data 001',2),
    ('Face Book Data 003',2),
    ('Face Book Data 004',2),
    ('Face Book Date 003',1);
;
SELECT fb_data, account 
    FROM fb_data
        JOIN fb_account ON account_reference = fb_ACCOUNT._id
    WHERE account = 'MARY'

这个;

  • 为面孔簿帐户创建一个表格
  • 然后加载两个帐户。
  • 然后它为数据创建表
  • 然后它会为两个帐户加载一些数据(使用该帐户所在行的唯一ID)
  • 然后从数据表中提取数据,并通过 JOIN
  • 从帐户中获取相应数据

最终结果是相同的(就对最终用户有用的数据而言):-

enter image description here

尽管对于相同的结果,这似乎可以做更多的工作,但是它被认为是更好的方法,因为它更有效(数字键/索引通常遍历更快并且使用更少的存储空间,因此减少了I / O开销)

如果您希望数据安全,那么这是一个更复杂的问题,但很可行。