登录功能的user文件
1 package com.example.justloginregistertest;
2 /**
3 * Created by littlecurl 2018/6/24
4 */
5 public class User {
6 private String name; //用户名
7 private String password; //密码
8 public User(String name, String password) {
9 this.name = name;
10 this.password = password;
11 }
12 public String getName() {
13 return name;
14 }
15 public void setName(String name) {
16 this.name = name;
17 }
18 public String getPassword() {
19 return password;
20 }
21 public void setPassword(String password) {
22 this.password = password;
23 }
24 }
连接数据库的DBOpenHelper文件
1 package com.example.justloginregistertest; 2 3 import android.content.Context; 4 import android.database.Cursor; 5 import android.database.sqlite.SQLiteDatabase; 6 import android.database.sqlite.SQLiteOpenHelper; 7 8 import java.util.ArrayList; 9 /** 10 * Created by littlecurl 2018/6/24 11 */ 12 13 public class DBOpenHelper extends SQLiteOpenHelper { 14 /** 15 * 声明一个AndroidSDK自带的数据库变量db 16 */ 17 private SQLiteDatabase db; 18 19 /** 20 * 写一个这个类的构造函数,参数为上下文context,所谓上下文就是这个类所在包的路径 21 * 指明上下文,数据库名,工厂默认空值,版本号默认从1开始 22 * super(context,"db_test",null,1); 23 * 把数据库设置成可写入状态,除非内存已满,那时候会自动设置为只读模式 24 * 不过,以现如今的内存容量,估计一辈子也见不到几次内存占满的状态 25 * db = getReadableDatabase(); 26 */ 27 public DBOpenHelper(Context context){ 28 super(context,"db_test",null,1); 29 db = getReadableDatabase(); 30 } 31 32 /** 33 * 重写两个必须要重写的方法,因为class DBOpenHelper extends SQLiteOpenHelper 34 * 而这两个方法是 abstract 类 SQLiteOpenHelper 中声明的 abstract 方法 35 * 所以必须在子类 DBOpenHelper 中重写 abstract 方法 36 * 想想也是,为啥规定这么死必须重写? 37 * 因为,一个数据库表,首先是要被创建的,然后免不了是要进行增删改操作的 38 * 所以就有onCreate()、onUpgrade()两个方法 39 * @param db 40 */ 41 @Override 42 public void onCreate(SQLiteDatabase db){ 43 db.execSQL("CREATE TABLE IF NOT EXISTS user(" + 44 "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 45 "name TEXT," + 46 "password TEXT)"); 47 } 48 @Override 49 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 50 db.execSQL("DROP TABLE IF EXISTS user"); 51 onCreate(db); 52 } 53 /** 54 * 接下来写自定义的增删改查方法 55 * 这些方法,写在这里归写在这里,以后不一定都用 56 * add() 57 * delete() 58 * update() 59 * getAllData() 60 */ 61 public void add(String name,String password){ 62 db.execSQL("INSERT INTO user (name,password) VALUES(?,?)",new Object[]{name,password}); 63 } 64 public void delete(String name,String password){ 65 db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password); 66 } 67 public void updata(String password){ 68 db.execSQL("UPDATE user SET password = ?",new Object[]{password}); 69 } 70 71 /** 72 * 前三个没啥说的,都是一套的看懂一个其他的都能懂了 73 * 下面重点说一下查询表user全部内容的方法 74 * 我们查询出来的内容,需要有个容器存放,以供使用, 75 * 所以定义了一个ArrayList类的list 76 * 有了容器,接下来就该从表中查询数据了, 77 * 这里使用游标Cursor,这就是数据库的功底了, 78 * 在Android中我就不细说了,因为我数据库功底也不是很厚, 79 * 但我知道,如果需要用Cursor的话,第一个参数:"表名",中间5个:null, 80 * 最后是查询出来内容的排序方式:"name DESC" 81 * 游标定义好了,接下来写一个while循环,让游标从表头游到表尾 82 * 在游的过程中把游出来的数据存放到list容器中 83 * @return 84 */ 85 public ArrayList<User> getAllData(){ 86 87 ArrayList<User> list = new ArrayList<User>(); 88 Cursor cursor = db.query("user",null,null,null,null,null,"name DESC"); 89 while(cursor.moveToNext()){ 90 String name = cursor.getString(cursor.getColumnIndex("name")); 91 String password = cursor.getString(cursor.getColumnIndex("password")); 92 list.add(new User(name,password)); 93 } 94 return list; 95 } 96 }