0

在我的应用程序中,我试图弄清楚如何保存用户 ID 会话并使用它,直到用户关闭应用程序。

我知道在 PHP 中你可以使用 $_SESSION['userID'] = $user_id

我想在 Android SQLite 中运行类似这样的查询

SELECT user_id, username, password
FROM users
**WHERE user_id = $_SESSION[user_id]**

这是来自php,有什么方法可以在android中做到这一点吗?我听说过共享偏好,但我不确定它是如何工作的?

抱歉,我刚开始学习 Android 编程。我有点菜鸟。如果你能在这里帮助我,我将不胜感激。

编辑:此用户 ID 是我将从 SQLite 数据库调用并在用户登录时将其保存为会话的列。

4

2 回答 2

1

我正在使用 AppPreferences 在我的 android 应用程序中做类似的事情,这是我创建的一个类的示例,用于保存电子邮件以供以后在应用程序中使用

public class AppPreferences {
public static final String ApplicationPreferences = "com.akada.danceworksonline.studio.MainActivity";
public String putEmail = "email";
private SharedPreferences sharedPrefs;
private SharedPreferences.Editor prefsEditor;

public AppPreferences(Context context) {

    this.sharedPrefs = context.getSharedPreferences(ApplicationPreferences,
            0);
    this.prefsEditor = sharedPrefs.edit();

}

public String getEmailPref() {
    return sharedPrefs.getString(putEmail, "");
}

public void saveEmail(String text) {
    prefsEditor.putString(putEmail, text);
    prefsEditor.commit();
}

无论您在哪里调用数据库,都会有类似的内容。

AppPreferences _appPrefs = new AppPreferences(getApplicationContext());

然后您可以执行 _appPrefs.saveEmail(textviewEmail) 之类的操作,或者您可以得到您的价值。

于 2013-11-10T04:01:00.337 回答
0

首先,您必须声明全局共享首选项:

SharedPreferences sp;

然后在 onCreate 你 delcare sp:

sp = getSharedPreferences("Session", 0); //"Session" is the file name it MUST be the same in all activities that require shared preferences. 

因此,基本上,当用户登录时,您会检查他是否已登录,如果是,则使用以下命令将他的 ID 保存在共享首选项中:

SharedPreferences.Editor e = sp.edit();
                e.putInt("ID", ID-Value-that-you-used-it-to-check-for-ID);
                e.commit();

在 onCreate 的登录类中,添加第二个块来检查用户是否已登录并且他从未注销过。简单地说,如果他是然后带他去下一个活动。

if (cID != 0)
    {
        Intent iLogged = new Intent(this, The-Next-Class.class);
        finish();
        startActivity(iLogged);
    }

每当您想检索刚刚添加的值时...

int ID = sp.getInt("ID", 0);

并注销用户并删除会话,请使用以下命令:

sp.edit().clear().commit();
        Intent iLogout = new Intent(this,   Login.class);
        finish();
        startActivity(iLogout);
        break;

编辑2:

你要做的是...

1) 从共享首选项中检索 ID。现在如果 UserID 列是 int 则使用。

int ID = sp.getInt("ID", 0); // 0 is default value which means if couldn't find the value in the shared preferences file give it a value of 0.

2)你必须检查,如果 ID != 0 然后将值传递给查询......

SELECT user_id, username, password
FROM users
WHERE user_id = ID
于 2013-11-10T03:59:01.953 回答