android开发 应用SQLite实现简单注册界面

来源:互联网 发布:淘宝发货提醒短信模板 编辑:程序博客网 时间:2024/06/06 03:39

话痨博主的碎碎念: 偷偷摸摸学了一下子SQLite,照猫画虎的应用在了自己的注册界面上。具体能完成的功能就是在注册界面键入新用户信息,然后通过简单的逻辑判断输入是否符合要求,若符合则存入到我们的user表中。

参考的链接放在前面:


界面如下:

注册界面


在布局文件中:

这个界面在我们之前学习的基础上,要新学习的是Spinner这个控件。
在xml中很简单,只需要简单的放置这个控件:

 <Spinner                android:id="@+id/question"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:entries="@array/question" />

然后我们需要的是让spinner有不同的选择,我们将他定义在question这个数组中:
找到string.xml文件,添加string array,再给这个string array 添加item即可。
这里写图片描述


在activity中:

在activity中,我们有两件事要完成:

  1. 简单判断键入数据是否符合要求
  2. 将新用户的数据存入到数据库

数据的简单判断我这里写的很简单,就是用户名不大于10个字符,密码大于6位,注册成功后跳转到登陆页面。

String name=username.getText().toString();        if(name.length()>10){            Toast.makeText(RegisterActivity.this, "用户名不能大于10位", Toast.LENGTH_SHORT).show();            return;        }        String psw=password.getText().toString();        if(psw.length()<6){            Toast.makeText(RegisterActivity.this, "密码不能小于6位", Toast.LENGTH_SHORT).show();            return;        }        String psw_check=confirmPsw.getText().toString();        if(!psw_check.equals(psw)){            Toast.makeText(RegisterActivity.this, "两次密码不一致!", Toast.LENGTH_SHORT).show();            password.setText("");            confirmPsw.setText("");            return;        }        Toast.makeText(RegisterActivity.this,"注册成功!欢迎您!", Toast.LENGTH_SHORT).show();        Intent intent=new Intent();        intent.setClass(RegisterActivity.this, loginActivity.class);        startActivity(intent);

然后就是将数据插入数据库了
从一开始到现在,我们还未建立过任何一个数据库
所以我们要先简单的使用sqlite建立我们第一个数据库
我将我数据库相关的文件都放在了utils包下:
这里写图片描述

目前只有三个文件:

  1. 第一个constant用于存放一些常量,比如说我们的数据库名、表名、表项名等等。目的在于后期对我们的数据项或者表名要做修改时,只需要修改这个常量值,而不必再去每一个文件中做修改。
public class constant {public static final String DATABASE_NAME="info.db";//常量public static final int DATABASE_VERSION=1;public static final String TABLE_NAME="user";public static final String USERNAME="username";public static final String PASSWORD="password";public static final String QUESTION="question";public static final String QUESTION_ANS="questionAns";}
  1. Dbmanager用于对我们的数据库操作做一个管理,如在增删改查的时候对我们的sql语句做一个简单的检查。
//数据库操作工具类public class DbManager {    public static mySqlLiteHelper helper;//  获得helper对象   之后才能对数据库操作    public static mySqlLiteHelper getIntance(Context context){        if(helper==null){            helper=new mySqlLiteHelper(context);        }        return helper;    }    public static void execSQL(SQLiteDatabase db,String sql){        if(db!=null){            if(sql!=null&&!"".equals(sql)){                db.execSQL(sql);            }        }    }}
  1. mySqlLiteHelper继承SQLiteOpenHelper这个数据库帮助类。是我们对数据库进行创建的地方。
public class mySqlLiteHelper extends SQLiteOpenHelper {    public mySqlLiteHelper(Context context, String name, CursorFactory factory, int version) {        super(context, name, factory, version);        // TODO Auto-generated constructor stub    }    public mySqlLiteHelper(Context context) {        // TODO Auto-generated constructor stub        super(context,constant.DATABASE_NAME,null,constant.DATABASE_VERSION);    }//数据库创建时回调//  db 数据库对象    @Override    public void onCreate(SQLiteDatabase db) {        // TODO Auto-generated method stub        Log.i("tag", "---------------oncreate---------------");        String sql="create table "+constant.TABLE_NAME+"("+constant.USERNAME+" varchar(10) primary key,"+constant.PASSWORD+" varchar(10) not null,"+constant.QUESTION+" varchar(10) not null,"+constant.QUESTION_ANS+" varchar(10) not null)";        db.execSQL(sql);    }// 数据库版本更新时回调函数    @Override    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {        // TODO Auto-generated method stub    }//  打开时回调    @Override    public void onOpen(SQLiteDatabase db) {        // TODO Auto-generated method stub        Log.i("tag", "------------------onopen-------------------");        super.onOpen(db);    }}

在此之后,我们需要在相应的registerActivity之中实现我们的数据库。

    private mySqlLiteHelper helper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //将布局xml文件引入当前activity之中        setContentView(R.layout.activity_register);        init();        helper=DbManager.getIntance(this);    }   

对应的onclick函数中做如下实现:

SQLiteDatabase db=helper.getWritableDatabase();//打开可写的数据库        String sql="insert into "+constant.TABLE_NAME+" values('"+name+"','"+psw+"','"+q+"','"+Ans+"')";//数据插入语句        db.execSQL(sql);//执行语句        db.close();//关闭数据库**不可省略

最后就是验证了:
运行我们的程序,在注册界面填写符合要求的数据。
这里写图片描述

然后我们来看一下我们的数据库有没有新增用户数据:
点击这个:
这里写图片描述

找到对应的安卓设备 data\data\对应项目名称\databases\

这里写图片描述

将我们的数据库文件(info.db)导出,在SQLite expert personal 中打开:
这里写图片描述

发现了我们新增了一条eeee用户的数据,完成简单的注册功能。

原创粉丝点击