安卓SQLite的练习

在学习了安卓内置的数据库之后极客班的老师布置了如下作业。

练习使用SQLite:
a)  做一个登录界面,登录字段有用户名、密码以及是否登录中的状态
b)  模拟登录成功后,有退出按钮,将登录的用户名及登录状态写入数据库
c)  下一次登录时,显示上一次登录的用户名
d)  保存所有用户登录的历史,重复的不保存
e)  当点击退出时,将当前用户登录状态清除

主要想法就是在在输入用户名和密码时显示未登录状态,在点击登录按钮后将用户名和密码保存进SQLite数据库,显示已登录状态,在数据保存之前先根据用户名进行查找,如果用户名已经存在就不进行保存。在点击登出按钮之后显示未登录状态。

话不多说,开始上代码。
首先是创建数据库
public class LoginSQL extends SQLiteOpenHelper {

    public static final String NAME = "name";
    //在这里使用一个自增长的主键来排序,一个唯一性的用户名来避免重复数据,用一个整形来表示登录状态
    public static final String CREATE_LOGIN = "create table login("+"id integer primary key autoincrement,"
            +"name text unique key ,"+"password text,"+"login integer)";



//    private Context mContext;

    public LoginSQL(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
//        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_LOGIN);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
然后是登录页面的代码
public class MainActivity extends AppCompatActivity {

    private Button loginButton;

    private TextView showLogin;

    private LoginSQL dbHelper;

    private EditText userName;

    private EditText passWord;

    private String username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new LoginSQL(this,"Login.db",null,1);
        userName = (EditText) findViewById(R.id.editText);
        passWord = (EditText) findViewById(R.id.editText2);
        showLogin = (TextView) findViewById(R.id.show_the_login);

        //通过查找上次登录的记录来显示上次登录的用户名
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor =db.query("login",null,null,null,null,null,null);
        if(cursor.moveToLast()){
             username = cursor.getString(cursor.getColumnIndexOrThrow(dbHelper.NAME));
        }

        userName.setText(username);
        showLogin.setText("未登录");
        //点击登录按钮之后将用户名和密码保存,用1来代表已登录的状态
        loginButton = (Button) findViewById(R.id.login_button);
        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showLogin.setText("登录中");
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();

                values.put("name",String.valueOf(userName.getText()));
                values.put("password", String.valueOf(passWord.getText()));
                values.put("login", 1);
                long trueorfalse = db.insert("login", null, values);
                if (trueorfalse != -1){
                    Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show();
                }

                //接着跳入已经登录后的界面
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });

    }

}
接着是登录后的界面的代码
public class Main2Activity extends AppCompatActivity {

    //在当前页面中有text显示已登录,有一个登出按钮
    private LoginSQL dbHelper;
    private Button logOut;
    private TextView hello;
    private String username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        dbHelper = new LoginSQL(this,"Login.db",null,1);
        hello = (TextView) findViewById(R.id.text_view);
        logOut = (Button) findViewById(R.id.logout_button);
        logOut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //点击登录按钮后,将表示登录状态的整形变为0,以表示未登录状态
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                Cursor cursor =db.query("login", null, null, null, null, null, null);
                if(cursor.moveToFirst()){
                    username = cursor.getString(cursor.getColumnIndexOrThrow(dbHelper.NAME));
                }
                ContentValues values = new ContentValues();
                values.put("login", 0);
                db.update("login", values, "name = ?", new String[]{username});
                Intent intent = new Intent(Main2Activity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值