Android登錄注冊(cè)功能 數(shù)據(jù)庫SQLite驗(yàn)證
本文實(shí)例為大家分享了Android登錄注冊(cè)功能的具體代碼,供大家參考,具體內(nèi)容如下
展示效果

代碼區(qū)
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}$";//驗(yàn)證密碼是否有特殊符號(hào)或長度不滿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創(chuàng)建數(shù)據(jù)庫
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,"賬號(hào)與密碼輸入不正確",Toast.LENGTH_SHORT).show();
}
break;
case R.id.button2:
Intent intent1 = new Intent(this, ZhuActivity.class);
startActivity(intent1);
break;
}
}
}
Mysqlist(創(chuàng)建數(shù)據(jù)庫)
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(注冊(cè)方法)
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}$";//驗(yàn)證密碼是否有特殊符號(hào)或長度不滿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創(chuàng)建數(shù)據(jù)庫
sdb=mys.getWritableDatabase();
}
@OnClick(R.id.button3)
public void onViewClicked() {
//獲得賬號(hào)密碼
String name = editText3.getText().toString().trim();
String pass = editText4.getText().toString().trim();
if (name == null || "".equals(name) || pass == null || "".equals(pass)) {
Toast.makeText(this, "賬號(hào)與密碼不能為空", 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, "注冊(cè)成功", Toast.LENGTH_SHORT).show();
sdb.execSQL("insert into user_mo(name,pass)values('"+name+"','"+pass+"')");
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);//啟動(dòng)跳轉(zhuǎn)
} else {
Toast.makeText(this, "手機(jī)號(hào)碼不法與密碼不能有特殊符號(hào)", Toast.LENGTH_SHORT).show();
}
}
}
/**
* 校驗(yàn)密碼
* @param password
* @return 校驗(yàn)通過返回true,否則返回false
*/
public static boolean isPassword(String password) {
return Pattern.matches(REGEX_PASSWORD, password);
}
/**
* 驗(yàn)證手機(jī)格式
*/
public static boolean isMobile(String number) {
/*
移動(dòng):134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
聯(lián)通:130、131、132、152、155、156、185、186
電信:133、153、180、189、(1349衛(wèi)通)
總結(jié)起來就是第一位必定為1,第二位必定為3或5或8,其他位置的可以為0-9
*/
String num = "[1][358]\\d{9}";//"[1]"代表第1位為數(shù)字1,"[358]"代表第二位可以為3、5、8中的一個(gè),"\\d{9}"代表后面是可以是0~9的數(shù)字,有9位。
if (TextUtils.isEmpty(number)) {
return false;
} else {
//matches():字符串是否在給定的正則表達(dá)式匹配
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(注冊(cè)布局)
<?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="輸入手機(jī)號(hào)" 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="注冊(cè)" 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="輸入手機(jī)號(hào)" 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="注冊(cè)" 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>
謝謝觀看,小編祝大家生活愉快!
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android消息推送:手把手教你集成小米推送(附demo)
本篇文章主要介紹了Android消息推送:手把手教你集成小米推送,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
JetPack Compose底部導(dǎo)航欄的實(shí)現(xiàn)方法詳解
開發(fā)一個(gè)新項(xiàng)目,底部導(dǎo)航欄一般是首頁的標(biāo)配,在以前的xml布局中,我們可以很輕松的是用谷歌提供的BottomNavigationView或者自定義來實(shí)現(xiàn)底部導(dǎo)航的功能,在Compose中也有也提供了一個(gè)類似的控件androidx.compose.material.BottomNavigation2022-09-09
android通過servlet服務(wù)器保存文件到手機(jī)
這篇文章主要為大家詳細(xì)介紹了android通過servlet服務(wù)器保存文件到手機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Android自定義控件實(shí)現(xiàn)可多選課程日歷CalendarView
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)可多選課程日歷CalendarView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Android選擇與上傳圖片之PictureSelector教程
這篇文章主要介紹了在Android中對(duì)于圖片的選擇與上傳方法,本文介紹了PictureSelector的相關(guān)使用教程,學(xué)習(xí)Android的同學(xué)進(jìn)來看看吧2021-08-08
Android中使用achartengine生成圖表的具體方法
這篇文章主要介紹了Android中使用achartengine生成圖表的具體方法,有需要的朋友可以參考一下2014-01-01
Android編程計(jì)算函數(shù)時(shí)間戳的相關(guān)方法總結(jié)
這篇文章主要介紹了Android編程計(jì)算函數(shù)時(shí)間戳的相關(guān)方法,結(jié)合實(shí)例形式總結(jié)分析了Android Java、Native、Kernel時(shí)間戳計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
Android 文件數(shù)據(jù)存儲(chǔ)實(shí)例詳解
這篇文章主要介紹了Android 文件數(shù)據(jù)存儲(chǔ)實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下2016-12-12

