1.安装SDK(由于之前是java,电脑有jdk环境,省略,SDK需要配置环境,和jdk基本相同,百度就完了)操作
2.安装Android Studio
以上都可以在AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载下载
3.开发登录,注册,修改密码功能
要求: 1. 在登录页面增加注册按钮,点击按钮进入注册页面, 2. 使用greendao,设计一个user基类的数据库 3. 注册页面与登录页面风格一致,但是密码输入行有2行,点击注册需要用户名和两个密码是否为空,是否符合之前的账号密码规则,校验两次输入密码是否一致,校验数据库是否已有用户名 4. 对数据库进行insert,在登陆页面输入用户名密码,对数据库进行查询,核对,提示正确或者错误,跳转主页 5. 主页增加修改密码功能,页面可以复用注册页面,但是不可以输入账号,密码输入两次一致即更新数据库,自动跳转回登录页面重新登录。
思想方式:先完成简单的登录注册,再百度greendao将登录注册功能获取数据的代码替换。最后根据自己的代码完成修改密码操作。
新建project的过程皆省略,百度
AndroidManifest.xml中需要注册新建的Activity
例如:
最后直接贴代码:
结构:
1.配置greendao
中加:
classpath "org.greenrobot:greendao-gradle-plugin:3.3.0"
中加:
1.apply plugin: 'org.greenrobot.greendao'2.implementation 'org.greenrobot:greendao:3.3.0'3.android {}下加: greendao{ schemaVersion 2 //版本 daoPackage 'com.example.myapplication.greendao' //包名 用来生成实体类的几个类的包 targetGenDir 'src/main/java' //目录 }
User(类似于java中的实体类):
package com.example.myapplication.greendao;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.NotNull;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Unique;
@Entity
public class User {
//主键自动增长
@Id(autoincrement = true)
private Long id;
@NotNull @Unique//唯一
private String name;
@NotNull
private String password;
@NotNull
private String password1;
@Generated(hash = 1004224251)
public User(Long id, @NotNull String name, @NotNull String password,
@NotNull String password1) {
this.id = id;
this.name = name;
this.password = password;
this.password1 = password1;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) { this.password = password; }
public String getPassword1() {
return this.password1;
}
public void setPassword1(String password1) { this.password1 = password1; }
}
注意:
1.User中只需要写private的几个,get和set以及greendao下的几个类都是点击Build,再点击make project或下边那个生成的。
2.如果删除了属性,要把hash都删除再bulid,否则容易报错
3.UserDao中就已经实现了新建表的操操作作
DBManager(用来建数据库以及获取可操作数据库)
package com.example.myapplication.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.example.myapplication.greendao.DaoMaster;
import com.example.myapplication.greendao.DaoSession;
public class DBManager {
private Context context;
private final static String dbName = "test.db";
private static DBManager mInstance;//单例
private DaoMaster.DevOpenHelper openHelper;
private DaoSession mDaoSession;
private SQLiteDatabase db;
public DBManager(Context context){
this.context = context;
openHelper = new DaoMaster.DevOpenHelper(context,dbName,null);
}
/**
* 双重检索获取DBManager对象的单例
* @param context
* @return
*/
public static DBManager getInstance(Context context){
if (mInstance == null){
synchronized (DBManager.class){
if (mInstance == null){
mInstance = new DBManager(context);
}
}
}
return mInstance;
}
/**
* 获取可读的数据库
* @return
*/
public SQLiteDatabase getReadableDatabase(){
if (openHelper == null){
openHelper = new DaoMaster.DevOpenHelper(context,dbName,null);
}
SQLiteDatabase db = openHelper.getReadableDatabase();
return db;
}
/**
* 获取可写的数据库
* @return
*/
public SQLiteDatabase getWritableDatabase(){
if (openHelper == null){
openHelper = new DaoMaster.DevOpenHelper(context,dbName,null);
}
SQLiteDatabase db = openHelper.getWritableDatabase();
return db;
}
/**
* 获取可写的会话层
* @return
*/
public DaoSession getWriteDaoSession(){
DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
mDaoSession = daoMaster.newSession();
return mDaoSession;
}
/**
* 获取可读的会话层
* @return
*/
public DaoSession getReadDaoSession(){
DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
mDaoSession = daoMaster.newSession();
return mDaoSession;
}
}
SaveInfo(用于对数据库表的曾删改查操作)
package com.example.myapplication.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import androidx.appcompat.widget.LinearLayoutCompat;
import com.example.myapplication.greendao.DaoMaster;
import com.example.myapplication.greendao.DaoSession;
import com.example.myapplication.greendao.User;
import com.example.myapplication.greendao.UserDao;
import org.greenrobot.greendao.query.Query;
import org.greenrobot.greendao.query.QueryBuilder;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SaveInfo {
public static boolean SaveInformation(Context context, User user) {
try {
DaoSession daoSession = DBManager.getInstance(context).getWriteDaoSession();
UserDao userDao = daoSession.getUserDao();
// userDao.createTable(daoSession.getDatabase(),true);
userDao.insert(user);
// FileOutputStream fos = context.openFileOutput("data.txt", Context.MODE_APPEND);
// fos.write(("用户名:" + user.getName() + " 密码:" + user.getPassword() + "邮箱:" + user.getMail()).getBytes());
// fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 修改
* @param context
* @param user
* @return
*/
public static boolean UpdateInformation(Context context, User user) {
try {
DaoSession daoSe