Android studio—SQlite注销账号(删除账号)

Android studio—SQlite注销账号(删除账号)

继上篇

上两篇篇我们完成了利用SQLite完成用户的注册与登录功能以及修改密码,有兴趣的同学可以回顾一下:
Android studio—SQlite数据库注册登录:https://blog.csdn.net/genijmni/article/details/106626300
Android studio—SQlite修改密码:https://blog.csdn.net/genijmni/article/details/106697445
在完成注册登录后,我们这次开发的功能就是:注销账号(删除账号)
多说无益,直接上效果展示:

效果预览

删除账号
删除后的账号无法再继续登录,并且所有数据删除。

用户类

用户类不多说,自动补全Get、Set方法

public class User {
    private String name;
    private  int id;
    private  String password;
    public User(String name,String password){
        super();
        this.name = name;
        this.password = password;
    }
    public  int getId() {return  id;}

    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User{id ="+ id + ", name = "+ name +",password ="+password +"}";
    }
}

完善数据库功能

上两篇的数据库使用到了增加方法(add)和修改方法(updata),这篇我们完善删除方法(delete)
三个方法一同贴上:

public class SQlite extends SQLiteOpenHelper {
    private SQLiteDatabase db;
    public SQlite(Context context){
        super(context,"db_test",null,2);
        db = getReadableDatabase();
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
                "name TEXT," +
                "password TEXT)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS user");
        onCreate(db);
    }
    public void add(String name,String password ){
        db.execSQL("INSERT INTO user(name,password)VALUES(?,?)",new Object[]{name,password});
    }
    public void delete(String name,String password ){
        db.execSQL( "DELETE FROM user WHERE name = ? AND password = ?",new Object[]{name,password});
    }
    public void updata(String name,String password){
        db.execSQL("UPDATE user SET password =? ",new Object[]{password});
    }
    public ArrayList<User> getAllDATA(){
        ArrayList<User> list = new ArrayList<User>();
        Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");
        while(cursor.moveToNext()){
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String password = cursor.getString(cursor.getColumnIndex("password"));
            list.add(new User(name,password));
        }
        return list;
    }
}

SQLite的功能基本完成,增加、删除、修改,还剩下一个查看。最后一个功能看情况完善。

注销账号功能

注销账号需要:
1.小弹窗警告提醒,删除后果
2.通过账号密码验证是否是本人行为
首先需要新建一个Acitity.

定义控件

private EditText username;
private EditText userpassword;
private SQlite mSQlite;
private Button ready;
private  Button back;

对控件进行绑定:

ready =findViewById(R.id.reday);
back = findViewById(R.id.back);
username= findViewById(R.id.userName);
userpassword=findViewById(R.id.userpassword);

账号密码确定

账号密码确定采用相同的认证方法,对输入的内容对比数据库数据。
删除采用数据库的删除方法:

mSQlite.delete(name,password);

当输入数据与数据库原始数据对应,即可完成注销账号操作:

ready.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String name = username.getText().toString().trim();
        String password = userpassword.getText().toString().trim();
        if (TextUtils.isEmpty(name)||TextUtils.isEmpty(password)){
            Toast.makeText(deleteActivity.this,"选项不能为空",Toast.LENGTH_SHORT).show();
            return;
        }
        ArrayList<User> data = mSQlite.getAllDATA();
        boolean userdata = false;
        for (int i = 0; i < data.size(); i++) {
            User user = data.get(i);   //可存储账号数量
            if (name.equals(user.getName()) && password.equals(user.getPassword())) {
                userdata = true;
                break;
            } else {
                userdata = false;
            }
        }
            if (userdata){
                mSQlite.delete(name,password);
                Toast.makeText(deleteActivity.this,"注销成功",Toast.LENGTH_SHORT).show();
                Intent intent1 = new Intent(deleteActivity.this,MainActivity.class);
                startActivity(intent1);
                finish();
            }
        }
});
mSQlite = new SQlite(deleteActivity.this);

用户注销的功能到此就大致完成了,如果你需要继续优化,就往下看。
删除一个东西前,系统对我们进行提醒。这里我就使用最常见的小弹窗警告方法。

小弹窗警告

先预览一下弹窗效果
弹窗警告
首先我们需要一个空闲的XML布局文件,方便我们使用。
在这个XML文件中,我们不需要进行布局。
并且在注销账户的按钮上添加一个属性:

android:onClick="delete"

方便我们点击触发事件。
在需要弹出的页面,调用这个XML布局。

final  View view1 = getLayoutInflater().inflate(R.layout.activity_delete,null);

主题功能代码写在主类之中,写在onCreate方法之外:

public void delete(View view){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("是否确定注销账号");
    builder.setMessage("注销账号会使你所有资料清楚,确认是否注销账号");
    final  View view1 = getLayoutInflater().inflate(R.layout.activity_delete,null);
    builder.setView(view1);

    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            Intent intent1 = new Intent(Main2.this,deleteActivity.class);
            startActivity(intent1);
            finish();
        }
    });

    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
        }
    });
    builder.show();
}

这里需要注意的是:“确定”和“取消”采用的是两个不同的Button属性控件

 builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
  builder.setNegativeButton("取消", new DialogInterface.OnClickListener()

一个采用的是setPositiveButton,另一个是setNegativeButton,自动生成时需要观察清楚。
若都使用同一个属性,在弹窗时会只有一个按钮。

总结

通过对数据库的验证,以及对数据库功能的完善,能够完成对用户的账户注销。
并且通过小弹窗的方式进行提醒注销后果。
我们下篇讲讲完善登录注册功能,增加了一些新技巧功能

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值