在 android studio 中使用 SQLite 显示上次登录的用户数据

Posted

技术标签:

【中文标题】在 android studio 中使用 SQLite 显示上次登录的用户数据【英文标题】:show last logged in user data using SQLite in android studio 【发布时间】:2021-08-28 03:04:53 【问题描述】:

我想在登录页面中显示最后登录的用户以在 TextView 中设置。我正在使用 SQLite 来存储数据。谁能建议我如何进行它的操作代码。 我已经为 SQLite 完成了编码,但我不知道这样做。 另外我想让用户保持登录状态,直到我自己注销。

主要活动:

public class MainActivity extends AppCompatActivity 
TextInputEditText etLink;
TextView tvIP;
Button btnSubmit;

DatabaseHelper databaseHelper;
SQLiteDatabase sqLiteDatabase;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    etLink=findViewById(R.id.etLink);

    tvIP=findViewById(R.id.tvIP);

    btnSubmit=findViewById(R.id.btnSubmit);
    btnSubmit.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            String IP_ADDRESS=etLink.getText().toString();

            databaseHelper=new DatabaseHelper(MainActivity.this);

            sqLiteDatabase=databaseHelper.getWritableDatabase();

            databaseHelper.addData(IP_ADDRESS,sqLiteDatabase);

            Toast.makeText(getApplicationContext(), "One row inserted", Toast.LENGTH_LONG).show();

            databaseHelper.close();
            
        );
    

数据库助手:

public class DatabaseHelper extends SQLiteOpenHelper 
public static final String IP_ADDRESS="IP_Address";
public static final String TABLE="user_tbl";
public static final String DATABASE="user";
public static final int DATABASE_VERSION=1;

public static final String QUERY="create table " + TABLE + "(" + IP_ADDRESS + " text);";

public DatabaseHelper(Context context) 
    super(context, DATABASE, null, DATABASE_VERSION);

    Log.d("DATABASE", "Database Created or Opened");


@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) 
    sqLiteDatabase.execSQL(QUERY);

    Log.d("DATABASE", "Table Created");


public void addData(String ip_address, SQLiteDatabase sqLiteDatabase)
    ContentValues contentValues=new ContentValues();

    contentValues.put(IP_ADDRESS, ip_address);

    sqLiteDatabase.insert(TABLE, null, contentValues);

    Log.d("DATABASE", "Data Inserted");


@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) 



【问题讨论】:

【参考方案1】:

您可以使用共享首选项进行会话管理。创建一个会话类,并在您登录时调用 setStatus 方法并将其设置为 true。同样,当您注销时,将 setStatus 方法设置为 false。

只需创建会话类的实例即可使用它。

public class Session 

private final SharedPreferences prefs;

public Session(Context cntx) 
    prefs = PreferenceManager.getDefaultSharedPreferences(cntx);

public boolean setStatus(boolean b)
    if(b)
        prefs.edit().putString("status","true").apply();
    else
        prefs.edit().putString("status","false").apply();
    return b;


public boolean getStatus()
    String status = prefs.getString("status","");
    return status.equals("true");


public String getUsername()
    return prefs.getString("name","");


public void setUsername(String name)
    prefs.edit().putString("name",name);


要使用这个类,请创建它的一个实例。

Session sess = new Session    
sess.setStatus(true)//    On Successful login set true
sess.setStatus(false)//    On Successful logout set false

【讨论】:

以上是关于在 android studio 中使用 SQLite 显示上次登录的用户数据的主要内容,如果未能解决你的问题,请参考以下文章

怎样在Android Studio中使用Uiautomator

在 android studio 中使用设备调试时,Android Logcat 为空

在Android Studio中使用lambda表达式

在android项目和库中使用支持库(Android Studio)

如何在 Android Studio 中使用我自己的 Android.mk 文件

如何设置android studio run release