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

  • 相关阅读:
    从FLC中学习的设计模式系列创建型模式(5)原型
    WP7应用开发笔记技巧 使用VisualState布置屏幕方向处理
    从FLC中学习的设计模式系列创建型模式(4)建造者
    从FLC中学习的设计模式系列结构型模式(1)适配器
    模拟Windows phone 开始菜单的瓦片动画
    解决log4net在.net 4.0 ClientProfile下无法使用
    从FLC中学习的设计模式系列创建型模式(1)单例
    从FLC中学习的设计模式系列创建型模式(2)抽象工厂
    WP7应用开发笔记(9) 应用程序栏
    同步上下文 SynchronizationContext 学习笔记
  • 原文地址:https://www.cnblogs.com/firefoxman/p/6925800.html
Copyright © 2011-2022 走看看