Android登录注册功能 数据库SQLite验证

本文实例为大家分享了Android登录注册功能的具体代码,供大家参考,具体内容如下

展示效果

代码区

MainActivity(登录方法)

public class MainActivity extends AppCompatActivity {

 @BindView(R.id.editText)
 EditText editText;
 @BindView(R.id.editText2)
 EditText editText2;
 @BindView(R.id.button)
 Button button;
 @BindView(R.id.button2)
 Button button2;
 @BindView(R.id.activity_main)
 RelativeLayout activityMain;
 public static final String REGEX_PASSWORD = "^[a-zA-Z0-9]{6,16}$";//验证密码是否有特殊符号或长度不满6位
 private SQLiteDatabase w;
 private SQLiteDatabase r;
 private Mysqlist mys;
 private List<St> mdata;
 private String name;
 private String pass;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ButterKnife.bind(this);
  mys = new Mysqlist(this, "zhu_c", null, 1);//使用halper创建数据库
  r=mys.getReadableDatabase();
  w=mys.getWritableDatabase();
  mdata=new ArrayList<St>();
  Cursor query = r.rawQuery("select * from user_mo", null);
  while(query.moveToNext()){
   int index1 = query.getColumnIndex("name");
   int index2 = query.getColumnIndex("pass");
   name = query.getString(index1);
   pass = query.getString(index2);
   mdata.add(new St(0, name, pass));
  }
 }

 @OnClick({R.id.button, R.id.button2})
 public void onViewClicked(View view) {
  switch (view.getId()) {
   case R.id.button:
    String name1 = editText.getText().toString().trim();
    String pass1 = editText2.getText().toString().trim();
    if (name1.equals(name)&&pass1.equals(pass)){

     Toast.makeText(this,"登录成功",Toast.LENGTH_SHORT).show();
     Intent intent = new Intent(this, UserActivity.class);
     startActivity(intent);
    }else{
     Toast.makeText(this,"账号与密码输入不正确",Toast.LENGTH_SHORT).show();
    }
    break;
   case R.id.button2:
    Intent intent1 = new Intent(this, ZhuActivity.class);
    startActivity(intent1);
    break;
  }
 }
}

Mysqlist(创建数据库)

public class Mysqlist extends SQLiteOpenHelper {

 private String sql="create table if not exists user_mo(_id Integer primary key autoincrement,name varchar(30) not null,pass varchar(50) not null)";

 public Mysqlist(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
  super(context, name, factory, version);
 }

 @Override
 public void onCreate(SQLiteDatabase db) {
  db.execSQL(sql);

 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // TODO Auto-generated method stub

 }
}

ZhuActivity(注册方法)

public class ZhuActivity extends AppCompatActivity {

 @BindView(R.id.editText3)
 EditText editText3;
 @BindView(R.id.editText4)
 EditText editText4;
 @BindView(R.id.button3)
 Button button3;
 @BindView(R.id.activity_zhu)
 RelativeLayout activityZhu;
 public static final String REGEX_PASSWORD = "^[a-zA-Z0-9]{6,16}$";//验证密码是否有特殊符号或长度不满6位
 private SQLiteDatabase sdb;
 private Mysqlist mys;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_zhu);
  ButterKnife.bind(this);
  mys = new Mysqlist(this, "zhu_c", null, 1);//使用halper创建数据库
  sdb=mys.getWritableDatabase();
 }

 @OnClick(R.id.button3)
 public void onViewClicked() {
  //获得账号密码
  String name = editText3.getText().toString().trim();
  String pass = editText4.getText().toString().trim();
  if (name == null || "".equals(name) || pass == null || "".equals(pass)) {
   Toast.makeText(this, "账号与密码不能为空", Toast.LENGTH_SHORT).show();
  } else {
   String number = editText3.getText().toString();
   boolean judge = isMobile(number);
   String pa = editText4.getText().toString();
   boolean judge1 = isPassword(pa);
   if (judge == true && judge1 == true) {
    Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
    sdb.execSQL("insert into user_mo(name,pass)values('"+name+"','"+pass+"')");
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);//启动跳转
   } else {
    Toast.makeText(this, "手机号码不法与密码不能有特殊符号", Toast.LENGTH_SHORT).show();
   }
  }
 }
 /**
  * 校验密码
  * @param password
  * @return 校验通过返回true,否则返回false
  */
 public static boolean isPassword(String password) {
  return Pattern.matches(REGEX_PASSWORD, password);
 }
 /**
  * 验证手机格式
  */

 public static boolean isMobile(String number) {
 /*
 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
 联通:130、131、132、152、155、156、185、186
 电信:133、153、180、189、(1349卫通)
 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
 */
  String num = "[1][358]\\d{9}";//"[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
  if (TextUtils.isEmpty(number)) {
   return false;
  } else {
   //matches():字符串是否在给定的正则表达式匹配
   return number.matches(num);
  }
 }
}

St(工具类)

public class St {
 private int id;
 private String name;
 private String pass;

 public St(int id, String name, String pass) {
  this.id = id;
  this.name = name;
  this.pass = pass;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getPass() {
  return pass;
 }

 public void setPass(String pass) {
  this.pass = pass;
 }

 @Override
 public String toString() {
  return "St{" +
    "id=" + id +
    ", name='" + name + '\'' +
    ", pass='" + pass + '\'' +
    '}';
 }
}

activity_zhu(注册布局)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_zhu"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="sizu.wxrkaoqianmomi.ZhuActivity">

 <EditText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:inputType="textPersonName"
  android:hint="输入手机号"
  android:gravity="center"
  android:ems="10"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="57dp"
  android:id="@+id/editText3" />

 <EditText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:inputType="textPersonName"
  android:hint="输入密码"
  android:gravity="center"
  android:ems="10"
  android:layout_below="@+id/editText3"
  android:layout_alignLeft="@+id/editText3"
  android:layout_alignStart="@+id/editText3"
  android:layout_marginTop="44dp"
  android:id="@+id/editText4" />

 <Button
  android:text="注册"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/editText4"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="88dp"
  android:id="@+id/button3" />
</RelativeLayout>

activity_main(登录布局)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="sizu.wxrkaoqianmomi.MainActivity">

 <EditText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:inputType="textPersonName"
  android:hint="输入手机号"
  android:gravity="center"
  android:ems="10"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="33dp"
  android:id="@+id/editText" />

 <EditText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:inputType="textPassword"
  android:ems="10"
  android:hint="输入密码"
  android:gravity="center"
  android:layout_marginTop="24dp"
  android:id="@+id/editText2"
  android:layout_below="@+id/editText"
  android:layout_alignLeft="@+id/editText"
  android:layout_alignStart="@+id/editText" />

 <Button
  android:text="登录"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/editText2"
  android:layout_alignLeft="@+id/editText2"
  android:layout_alignStart="@+id/editText2"
  android:layout_marginTop="85dp"
  android:id="@+id/button" />

 <Button
  android:text="注册"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignTop="@+id/button"
  android:layout_alignRight="@+id/editText2"
  android:layout_alignEnd="@+id/editText2"
  android:id="@+id/button2" />
</RelativeLayout>

谢谢观看,小编祝大家生活愉快!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android开发之登录验证实例教程

    本文所述实例源自一个项目开发中的登录验证功能,具体的要求就是,在Android端输入用户名和密码,在服务器端验证MySQL数据库中是否有此用户,实现之前当然首要的是,如何使Android端的数据发送到服务器端,具体的实现方法如下: 服务器端:ManageServlet.java代码如下: public class ManageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServle

  • Android实现登录功能demo示例

    本文实例讲述了Android实现登录功能的方法.分享给大家供大家参考,具体如下: 安卓,在小编实习之前的那段岁月里面,小编都没有玩儿过,如果说玩儿过,那就是安卓手机了,咳咳,敲登录的时候有种特别久违的熟悉,这种熟悉的感觉就和当时敲机房收费系统一样,那叫一个艰难啊,不过小编相信,在小编的IT成长之路上,正是因为有了这些艰难险阻陪伴着小编一起成长,才让小编更加勇敢坚强,勇敢的面对一个又一个bug,坚强的敲完一行行代码,经过了几天的研究登录一条线的功能已经实现,现在小编就来简单的总结一下,还请小伙伴们

  • Android客户端实现注册、登录详解(2)

    上文中介绍了安卓客户端与服务器交互,实现注册功能,Android客户端实现注册/登录详解(一) 本文将继续介绍App与服务器的交互实现登录和自动登录的功能,上文说到请求服务器进行注册主要是通过POST请求携带参数实现,起作用的主要代码: StringRequest request=new StringRequest(Method.POST, url, new Listener<String>() { //请求成功 @Override public void onResponse(String

  • Android客户端实现注册、登录详解(1)

    我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个Android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之处还请指出. 在这里我们仅讨论客户端如何请求服务器进行注册,而服务器在收到客户端请求后进行的一系列操作并不在本文所述范围内,有兴趣大家可以参考 请求服务器 客户端在进行用户信息的注册和登录时一般使用post请求(携带参数)去服务器.以volley框架请求服务器为例,真正与服务器进行交互的就是如下代码: StringRequ

  • Android手机注册登录时获取验证码之后倒计时功能(知识点总结)

    app注册界面经常会遇到一个场景:手机注册,点击获取验证码,验证码发送成功之后,开始倒计时 具体代码如下所示: private TimerTask timerTask; private Timer timer; private int time = 5000;//五秒 private int timess; /** * 开始倒计时 */ private void startTimer() { timess = time/1000; tvTime.setText(timess+"S");

  • Android设计登录界面、找回密码、注册功能

    本文实例为大家分享了Android 登录.找回密码.注册功能的实现代码,供大家参考,具体内容如下 1.数据库的设计 我在数据库中添加了两张表,一张表用来存储用户信息,诸如用户名,密码,手机号等,可任意添加.另一张表用来存储上一个登录用户的账户信息,我是为了方便才另外创建了一张表去存储,而且这张表我设计了它只能存储一条信息,每次的存储都是对上一条记录的覆盖.事实上,我尝试过在存储用户信息的那张表内添加一个标识,用来标记上一次登录的是哪一个帐号,但是这样做的话,每次改变标识都需要遍历整张表,十分的麻

  • Android实现闪屏及注册和登录界面之间的切换效果

    在没给大家介绍正文之前先给大家说下实现思路: 先分别实现闪屏.注册界面.登录界面的活动,再用Intent将相关的活动连接起来,实现不同活动之间的跳转.此次试验代码较多,我只列出主要代码,详细的代码可用底部的下载链接下载. 一.实验效果图: 二.主要代码: (1)WelcomeActivity.Java(这部分代码实现的是第一页的欢迎页面) package com.example.flashscreendemo; import android.app.Activity; import androi

  • Android注册登录实时自动获取短信验证码

    android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便,分享一篇文章大家可以查看一下,点击. public class SMSReceiver extends BroadcastReceiver{ private String ver

  • Android实现登录注册功能封装

    我们都知道Android应用软件基本上都会用到登录注册功能,那么对一个一个好的登录注册模块进行封装就势在必行了.这里给大家介绍一下我的第一个项目中所用到的登录注册功能的,已经对其进行封装,希望能对大家有帮助,如果有什么错误或者改进的话希望各位可以指出. 我们都知道登录注册系列功能的实现有以下几步: 注册账号 登录账号 (第三方账号登录) 记住密码 自动登录 修改密码 大体的流程如下 对于需要获取用户登录状态的操作,先判断用户是否已经登录. 如果用户已经登录,则继续后面的操作,否则,跳转到登录页面

  • Android开发之注册登录方法示例

    本文所述,继续上一篇关于Android端向服务器端发送数据的方法进一步完善注册登录的方法,由于版本问题出现一点瑕疵,今天经过调试已经解决,在这里给大家介绍一下. 在Android4.0以后版本的对于网络权限要求变得严格,致使上一篇所述的案例无法将数据发送到服务器端,当你一点击发送数据,Android控制台就会报错,错误当然是很让人头疼,基本上都是关于http的错误,所以可以肯定是Android虚拟机向服务器发送数据时出现了错误,经过一番检查与测试后才知道,4.0之后的版本,主线程中不允许调用网络

随机推荐