安卓SQLite的练习
2016-01-03 11:51
274 查看
在学习了安卓内置的数据库之后极客班的老师布置了如下作业。 练习使用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_b 4000 utton); 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); } }); } }
相关文章推荐
- 关于触发器修改自身数据表实例
- Oralce创建数据库,以及登录数据库操作方式
- 部署MySQLl审计插件
- Oracle 忘记密码,密码修改
- MongoDB实战指南(三):MongoDB的锁机制
- 数据库的管理SQLite
- mysql 用户
- 【转】oracle 创建create user 详解
- SQL Server XML 入门 基础
- Oracle中RAISE异常深入分析
- mysql取内容时先order by后group by
- sql 一对多 出一条结果及两列选择一个的方法,null值设置默认值
- MySQL中的<=>比较运算符
- SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例
- 【转】oracle异常错误处理
- SQLite 一个轻量级别数据库
- EF6(CodeFirst)+MySql开发脱坑指南
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍--转载
- mysql进阶(二十)CPU超负荷异常情况
- mysql进阶(二十)CPU超负荷异常情况