使用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();
}''
整个逻辑为这样,希望能对你有用,在细节方面,若有错误,还望指正