使用SQLite数据库实现登陆注册

使用SQLite数据库实现登陆#

一.首先布局##

登陆只需要两个EditText实现输入账号密码加上一个Button,添加点击事件,这就不贴代码了
注册也是如此

二.创建数据库##

新建一个DBHelper 类用于创建数据库
''public class DBHelper extends SQLiteOpenHelper{
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists info_user(_id integer primary key autoincrement,name_user varchar(20) not null," +
"pass_user varchar(20) not null);");
Log.d("DBhelper","create table ");
}

public DBHelper(Context context) {
    super(context, "info_user", null, 1);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table  if  exists info_user");
    Log.d("DBHelper","drop table");
    onCreate(db);

}

}''
代码如上,
该类继承SQLiteOpenHelper,需要实现两个方法,onCreate()和onUpgrade()
onCreate(),创建数据库
我是直接用SQL语言直接写,不建议,可使用google的拼装方法,该方法便于日后管理
db.exeSQL使用SQL语句来创建数据库表info_user,并添加三个属性_id,name_user,pass_user,_id为主键,为int类型并自增,另外两个为字符型,长度20;
Log.d便于查看表是否创建或更新了
onUpgrade(),当数据库版本发生改变时,调用此方法
db.exeSQL中SQL语言来实现删除原表,然后再调用onCreate方法

三.创建一个实体类##

新建一个Bean类
''public class Bean {
private String name_user;
private String pass_user;

public String getName_user() {
    return name_user;
}

public void setName_user(String name_user) {
    this.name_user = name_user;
}

public String getPass_user() {
    return pass_user;
}

public void setPass_user(String pass_user) {
    this.pass_user = pass_user;
}

''
这边就不赘述了,声明变量,使用get()set()

四.创建一个Op工具类##

实现数据库表的增删改查
''
public class Op {

DBHelper dbHelper;
SQLiteDatabase db;

public Op(Context context){
dbHelper=new DBHelper(context);
}

public void open() throws SQLiteException {
    db = dbHelper.getWritableDatabase();
}

public void close() {
    db.close();
}

public void addbean(String name_user, String pass_user) {//添加数据
this.open();
ContentValues values = new ContentValues();
values.put("name_user", name_user);
values.put("pass_user", pass_user);
db.insert("info_user", null, values);
this.close();
}
public boolean login(String username,String password){
this.open();
String sql="select * from info_user where name_user=? and pass_user=?";
Cursor cursor=sdb.rawQuery(sql, new String[]{username,password});
if(cursor.moveToFirst()==true){
cursor.close();
this.close();
return true;
}
this.close();
return false;
}

}''
这边主要是两个方法一个是添加数据,另一个是登陆的查询方法,都传入两个参数
第一个添加方法是google推荐的添加语句,也可以用SQL语句直接添加
第二个登陆查询方法,返回ture|false

五.在登陆界面中调用方法##

'' public void login(){
final String username=edit_user.getText().toString();
final String userpass=edit_pass.getText().toString();
if(op.login(username, userpass) == true){
startActivity(new Intent(LoginActivity.this, HostActivity.class));
finish();
}else{
Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_LONG).show();
edt_pass.setText("");
}
}''

六.在注册界面中调用方法##

''public void register() {
op.addbean(edt_name_rg.getText().toString(), edt_pass_rg.getText().toString());
Toast.makeText(RegisteActivity.this, "已注册,将返回", Toast.LENGTH_SHORT);
startActivity(new Intent(RegisteActivity.this, LoginActivity.class));
finish();
}''
整个逻辑为这样,希望能对你有用,在细节方面,若有错误,还望指正

原文地址:https://www.cnblogs.com/firefoxman/p/6925800.html