Android基于Sqlite實現(xiàn)注冊和登錄功能
Android中基于Sqlite實現(xiàn)注冊和登錄功能,供大家參考,具體內(nèi)容如下
前言
寫這篇博客主要是為了鞏固一下學(xué)的Sqlite知識以及梳理一下這個項目的邏輯
實現(xiàn)邏輯
項目的圖片結(jié)構(gòu)圖如下
代碼
user class
public class User { ? ? private String name; ? ?//用戶名 ? ? private String password; ? ??//密碼 ? ? public User(String name, String password) { ? ? ? ? this.name = name; ? ? ? ? this.password = password; ? ? } ? ? public String getName() { ? ? ? ? return name; ? ? } ? ? public void setName(String name) { ? ? ? ? this.name = name; ? ? } ? ? public String getPassword() { ? ? ? ? return password; ? ? } ? ? public void setPassword(String password) { ? ? ? ? this.password = password; ? ? } }
DBOpenHelper class
import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; public class DBOpenHelper extends SQLiteOpenHelper { ? ? private SQLiteDatabase db; ? ? public DBOpenHelper(Context context){//打開數(shù)據(jù)庫 ? ? ? ? super(context,"db_test",null,1);//1:上下文,2:數(shù)據(jù)庫名,3:允許我們查詢數(shù)據(jù)時返回一個Cursor,4:當(dāng)前數(shù)據(jù)庫的版本號 ? ? ? ? db = getReadableDatabase(); ? ? } ? ? @Override ? ? public void onCreate(SQLiteDatabase db){//建表(user)語句 ? ? ? ? db.execSQL("CREATE TABLE IF NOT EXISTS user(" +//PRIMARY key 將id設(shè)為主鍵 ,AUTOINCREMENT 設(shè)置id列自為增長 ? ? ? ? ? ? ? ? "_id INTEGER PRIMARY KEY AUTOINCREMENT," + ? ? ? ? ? ? ? ? "name TEXT," + ? ? ? ? ? ? ? ? ? ? ? //text 文本類型 ? ? ? ? ? ? ? ? "password TEXT)"); ? ? } ? ? @Override ? ? public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){//重寫升級 ? ? ? ? db.execSQL("DROP TABLE IF EXISTS user"); ? ? ? ? onCreate(db); ? ? } ? ? public void add(String name,String password){//重寫添加 ? ? ? ? db.execSQL("INSERT INTO user (name,password) VALUES(?,?)",new Object[]{name,password}); ? ? } ? ? public void delete(String name,String password){//重寫刪除 ? ? ? ? db.execSQL("DELETE FROM user WHERE name = AND password ="+name+password); ? ? } ? ? public void updata(String password){//重寫更新 ? ? ? ? db.execSQL("UPDATE user SET password = ?",new Object[]{password}); ? ? } ? ? public ArrayList<User> getAllData(){//將表內(nèi)信息返回成一個list ? ? ? ? ArrayList<User> list = new ArrayList<User>(); ? ? ? ? Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");//1表名,2列,3行,4行,5指定列進(jìn)行過濾,6進(jìn)一步過濾。7得到的信息進(jìn)行排序(desc逆序) ? ? ? ? while(cursor.moveToNext()){//一行一行遍歷 ? ? ? ? ? ? String name = cursor.getString(cursor.getColumnIndex("name"));//移動到name列,讀取出來 ? ? ? ? ? ? String password = cursor.getString(cursor.getColumnIndex("password")); ? ? ? ? ? ? list.add(new User(name,password));//添加到user 的list中 ? ? ? ? } ? ? ? ? return list;//把list返回 ? ? } }
activity_login.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ? ? xmlns:app="http://schemas.android.com/apk/res-auto" ? ? xmlns:tools="http://schemas.android.com/tools" ? ? android:layout_width="match_parent" ? ? android:layout_height="match_parent" ? ? android:background="#eeeeee" ? ? tools:context=".LoginActivity"> ? ? <RelativeLayout ? ? ? ? android:id="@+id/rl_loginactivity_top" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="70dp" ? > ? ? ? ? <ImageView ? ? ? ? ? ? android:id="@+id/iv_loginactivity_back" ? ? ? ? ? ? android:layout_width="30dp" ? ? ? ? ? ? android:layout_height="30dp" ? ? ? ? ? ? android:layout_alignParentTop="true" ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? android:layout_marginTop="20dp" ? ? ? ? ? ? android:clickable="true" /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_loginactivity_login" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="登錄" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_toRightOf="@+id/iv_loginactivity_back" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_alignParentLeft="true" ? ? ? ? ? ? android:layout_marginLeft="30dp" ? ? ? ? ? ? /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_loginactivity_register" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="注冊" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_alignParentRight="true" ? ? ? ? ? ? android:layout_marginRight="30dp" ? ? ? ? ? ? android:clickable="true" ? ? ? ? ? ? android:onClick="onClick" ? ? ? ? ? ? /> ? ? </RelativeLayout> ? ? <LinearLayout ? ? ? ? android:id="@+id/ll_loginactivity_two" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:orientation="vertical" ? ? ? ? android:layout_below="@+id/rl_loginactivity_top" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? > ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_loginactivity_username" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="用戶名:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_loginactivity_username" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:hint="手機號/郵箱/用戶名"/> ? ? ? ? </LinearLayout> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_loginactivity_password" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="密 ? ?碼:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_loginactivity_password" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:hint="登錄密碼" ? ? ? ? ? ? ? ? android:inputType="textPassword"/> ? ? ? ? </LinearLayout> ? ? </LinearLayout> ? ? <Button ? ? ? ? android:id="@+id/bt_loginactivity_login" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:layout_below="@+id/ll_loginactivity_two" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? android:text="登錄" ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? android:gravity="center" ? ? ? ? android:onClick="onClick" ? ? ? ? /> </RelativeLayout>
LoginActivity
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.content.Intent; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; public class LoginActivity extends AppCompatActivity implements View.OnClickListener { ? ? private DBOpenHelper mDBOpenHelper; ? ? private EditText mEtLoginactivityUsername; ? ? private EditText mEtLoginactivityPassword; ? ? @Override ? ? protected void onCreate(Bundle savedInstanceState) { ? ? ? ? super.onCreate(savedInstanceState); ? ? ? ? setContentView(R.layout.activity_login); ? ? ? ? initView(); ? ? ? ? mDBOpenHelper = new DBOpenHelper(this); ? ? } ? ? private void initView() { ? ? ? ? // 初始化控件 ? ? ? ? mEtLoginactivityUsername = findViewById(R.id.et_loginactivity_username); ? ? ? ? mEtLoginactivityPassword = findViewById(R.id.et_loginactivity_password); ? ? ? ? // 設(shè)置點擊事件監(jiān)聽器 ? ? } ? ? public void onClick(View view) { ? ? ? ? switch (view.getId()) { ? ? ? ? ? ? // 跳轉(zhuǎn)到注冊界面 ? ? ? ? ? ? case R.id.tv_loginactivity_register: ? ? ? ? ? ? ? ? startActivity(new Intent(this, RegisterActivity.class)); ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case R.id.bt_loginactivity_login: ? ? ? ? ? ? ? ? String name = mEtLoginactivityUsername.getText().toString().trim();//.trim()刪除兩邊的空格 ? ? ? ? ? ? ? ? String password = mEtLoginactivityPassword.getText().toString().trim(); ? ? ? ? ? ? ? ? if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {//TextUtils.isEmpty()輸入框是空值或者你就敲了幾下空格鍵該方法都會返回true ? ? ? ? ? ? ? ? ? ? ArrayList<User> data = mDBOpenHelper.getAllData();//data為獲取的user表內(nèi)的user信息 ? ? ? ? ? ? ? ? ? ? boolean match = false; ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < data.size(); i++) {//遍歷比較 ? ? ? ? ? ? ? ? ? ? ? ? User user = data.get(i);//獲取data里的第i個user信息 ? ? ? ? ? ? ? ? ? ? ? ? if (name.equals(user.getName()) && password.equals(user.getPassword())) {//將信息與輸入的信息進(jìn)行對比 ? ? ? ? ? ? ? ? ? ? ? ? ? ? match = true; ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? match = false; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if (match) { ? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "登錄成功", Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? ? ? ? ? Intent intent = new Intent(this, MainActivity.class); ? ? ? ? ? ? ? ? ? ? ? ? startActivity(intent); ? ? ? ? ? ? ? ? ? ? ? ? finish();//銷毀此Activity ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "用戶名或密碼不正確,請重新輸入", Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "請輸入你的用戶名或密碼", Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? } }
activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ? ? xmlns:app="http://schemas.android.com/apk/res-auto" ? ? xmlns:tools="http://schemas.android.com/tools" ? ? android:layout_width="match_parent" ? ? android:layout_height="match_parent" ? ? android:background="#eeeeee" ? ? tools:context=".RegisterActivity"> ? ? <RelativeLayout ? ? ? ? android:id="@+id/rl_registeractivity_top" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="70dp" ? ? ? ? > ? ? ? ? <ImageView ? ? ? ? ? ? android:id="@+id/iv_registeractivity_back" ? ? ? ? ? ? android:layout_width="30dp" ? ? ? ? ? ? android:layout_height="30dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? android:clickable="true" ? ? ? ? ? ? /> ? ? ? ? <TextView ? ? ? ? ? ? android:id="@+id/tv_registeractivity_register" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:text="注冊" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:textSize="20dp" ? ? ? ? ? ? android:layout_centerVertical="true" ? ? ? ? ? ? android:layout_marginLeft="20dp" ? ? ? ? ? ? /> ? ? </RelativeLayout> ? ? <LinearLayout ? ? ? ? android:id="@+id/ll_registeractivity_body" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:orientation="vertical" ? ? ? ? android:layout_below="@+id/rl_registeractivity_top" ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? android:layout_marginRight="5dp" ? ? ? ? > ? ? ? ? <!-- 第一個文本編輯框 ?輸入用戶名 --> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_registeractivity_username" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="用戶名:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_registeractivity_username" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? ? ? android:hint="請輸入用戶名" ? ? ? ? ? ? ? ? android:gravity="center_vertical" ? ? ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? ? ? /> ? ? ? ? </LinearLayout> ? ? ? ? <!-- 第二個文本編輯框 ?輸入密碼 --> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:orientation="horizontal"> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/tv_registeractivity_password1" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="密 ? ?碼:"/> ? ? ? ? ? ? <EditText ? ? ? ? ? ? ? ? android:id="@+id/et_registeractivity_password" ? ? ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? ? ? android:gravity="center_vertical" ? ? ? ? ? ? ? ? android:layout_marginLeft="10dp" ? ? ? ? ? ? ? ? android:inputType="textPassword" ? ? ? ? ? ? ? ? android:hint="請輸入密碼" /> ? ? ? ? </LinearLayout> ? ? ? ? <LinearLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_marginRight="15dp" ? ? ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? ? ? android:orientation="horizontal" /> ? ? ? ? <!-- 注冊按鈕 --> ? ? ? ? <Button ? ? ? ? ? ? android:id="@+id/bt_registeractivity_register" ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="50dp" ? ? ? ? ? ? android:layout_marginLeft="5dp" ? ? ? ? ? ? android:textColor="#3A5FCD" ? ? ? ? ? ? android:text="注冊" ? ? ? ? ? ? android:layout_marginTop="40dp" ? ? ? ? ? ? android:onClick="onClick" ? ? ? ? ? ? /> ? ? </LinearLayout> </RelativeLayout>
RegisterActivity
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { ? ? private DBOpenHelper mDBOpenHelper; ? ? private Button mBtRegisteractivityRegister; ? ? private ImageView mIvRegisteractivityBack; ? ? private EditText mEtRegisteractivityUsername; ? ? private EditText mEtRegisteractivityPassword; ? ? @Override ? ? protected void onCreate(Bundle savedInstanceState) { ? ? ? ? super.onCreate(savedInstanceState); ? ? ? ? setContentView(R.layout.activity_register); ? ? ? ? initView(); ? ? ? ? mDBOpenHelper = new DBOpenHelper(this); ? ? } ? ? private void initView(){ ? ? ? ? mEtRegisteractivityUsername = findViewById(R.id.et_registeractivity_username); ? ? ? ? mEtRegisteractivityPassword = findViewById(R.id.et_registeractivity_password); } ? ? public void onClick(View view) { ? ? ? ? switch (view.getId()) { ? ? ? ? ? ? case R.id.iv_registeractivity_back: //返回登錄頁面 ? ? ? ? ? ? ? ? Intent intent1 = new Intent(this, LoginActivity.class); ? ? ? ? ? ? ? ? startActivity(intent1); ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? case R.id.bt_registeractivity_register: ? ?//注冊按鈕 ? ? ? ? ? ? ? ? //獲取用戶輸入的用戶名、密碼、驗證碼 ? ? ? ? ? ? ? ? String username = mEtRegisteractivityUsername.getText().toString().trim(); ? ? ? ? ? ? ? ? String password = mEtRegisteractivityPassword.getText().toString().trim(); ? ? ? ? ? ? ? ? //注冊驗證 ? ? ? ? ? ? ? ? if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) { ? ? ? ? ? ? ? ? ? ? mDBOpenHelper.add(username, password);//將用戶名和密碼加入到數(shù)據(jù)庫的表內(nèi)中 ? ? ? ? ? ? ? ? ? ? Intent intent2 = new Intent(this, LoginActivity.class); ? ? ? ? ? ? ? ? ? ? startActivity(intent2); ? ? ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "驗證通過,注冊成功", Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? Toast.makeText(this, "未完善信息,注冊失敗", Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? break; ? ? ? ? } ? ? } }
實現(xiàn)效果
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)仿慕課網(wǎng)下拉加載動畫
這篇文章是我在做動畫的項目中整理出來的,在eoe看了篇帖子,然后仿慕課網(wǎng)做了一個下拉加載動畫。此功能實現(xiàn)方法是AnimationDrawable類進(jìn)行 Animation-list中item的循環(huán)遍歷圖片,類似于flash里的幀幀動畫,需要的朋友可以參考下2015-07-07Android 動畫之RotateAnimation應(yīng)用詳解
本節(jié)講解旋轉(zhuǎn)動畫效果RotateAnimation方法的應(yīng)用,有需要的朋友可以參考下2012-12-12Android長按imageview把圖片保存到本地的實例代碼
本文通過代碼給大家介紹了Android長按imageview把圖片保存到本地的實現(xiàn)方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-12-12Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法
這篇文章主要介紹了Android7.0上某些PopuWindow出現(xiàn)顯示位置不正確問題的解決方法,涉及針對Android7.0中PopuWindow屬性與方法的相關(guān)設(shè)置技巧,需要的朋友可以參考下2017-10-10