下面是一个简单的示例代码,展示了如何在Android应用中处理登录失败并使用SQLite数据库存储用户数据。
首先,在你的Android项目中添加SQLite数据库的依赖包。在build.gradle文件中添加以下代码:
dependencies {
implementation 'androidx.sqlite:sqlite:2.2.0'
}
接下来,创建一个名为User的Java类,用于表示用户对象,并包含以下代码:
public class User {
private int id;
private String username;
private String password;
public User() { }
public User(String username, String password) {
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
然后,创建一个名为DatabaseHelper的Java类,用于处理SQLite数据库的创建和操作,并包含以下代码:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "users.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "users";
private static final String COLUMN_ID = "id";
private static final String COLUMN_USERNAME = "username";
private static final String COLUMN_PASSWORD = "password";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_NAME + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_USERNAME + " TEXT, " +
COLUMN_PASSWORD + " TEXT" +
")";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public void addUser(User user) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_USERNAME, user.getUsername());
values.put(COLUMN_PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
db.close();
}
public boolean checkUser(String username, String password) {
String[] columns = { COLUMN_ID };
SQLiteDatabase db = this.getReadableDatabase();
String selection = COLUMN_USERNAME + " = ?" + " AND " + COLUMN_PASSWORD + " = ?";
String[] selectionArgs = { username, password };
Cursor cursor = db.query(TABLE_NAME, columns, selection, selectionArgs, null, null, null);
int count = cursor.getCount();
cursor.close();
db.close();
return count > 0;
}
}
最后,在你的登录Activity中使用DatabaseHelper类来处理登录逻辑和保存用户数据。以下是一个简单的示例代码:
public class LoginActivity extends AppCompatActivity {
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
btnLogin = findViewById(R.id.btn_login);
databaseHelper = new DatabaseHelper(this);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
if (databaseHelper.checkUser(username, password)) {
// 登录成功
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
} else {
// 登录失败
Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
databaseHelper.close();
}
}
这是一个简单的示例,展示了如何处理登录失败并使用SQLite数据库存储用户数据。你可以根据自己的需求对代码进行修改和完善。
上一篇:Android登录界面切换
下一篇:Android登录提示未正确显示