溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能

發(fā)布時(shí)間:2022-04-24 10:37:43 來源:億速云 閱讀:182 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能”吧!

實(shí)現(xiàn)邏輯

Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能

項(xiàng)目的圖片結(jié)構(gòu)圖如下

Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能

代碼

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ù)時(shí)返回一個(gè)Cursor,4:當(dāng)前數(shù)據(jù)庫的版本號(hào)
        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){//重寫升級(jí)
        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)信息返回成一個(gè)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"));//移動(dòng)到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="注冊(cè)"
            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="手機(jī)號(hào)/郵箱/用戶名"/>
        </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è)置點(diǎn)擊事件監(jiān)聽器
    }

    public void onClick(View view) {
        switch (view.getId()) {
            // 跳轉(zhuǎn)到注冊(cè)界面
            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()輸入框是空值或者你就敲了幾下空格鍵該方法都會(huì)返回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個(gè)user信息
                        if (name.equals(user.getName()) && password.equals(user.getPassword())) {//將信息與輸入的信息進(jìn)行對(duì)比
                            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, "用戶名或密碼不正確,請(qǐng)重新輸入", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(this, "請(qǐng)輸入你的用戶名或密碼", 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="注冊(cè)"
            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"
        >
        <!-- 第一個(gè)文本編輯框  輸入用戶名 -->
        <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="請(qǐng)輸入用戶名"
                android:gravity="center_vertical"
                android:layout_marginLeft="10dp"
                />
        </LinearLayout>
        <!-- 第二個(gè)文本編輯框  輸入密碼 -->
        <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="請(qǐng)輸入密碼" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="15dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal" />
        <!-- 注冊(cè)按鈕 -->
        <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="注冊(cè)"
            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:    //注冊(cè)按鈕
                //獲取用戶輸入的用戶名、密碼、驗(yàn)證碼
                String username = mEtRegisteractivityUsername.getText().toString().trim();
                String password = mEtRegisteractivityPassword.getText().toString().trim();
                //注冊(cè)驗(yàn)證
                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, "驗(yàn)證通過,注冊(cè)成功", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(this, "未完善信息,注冊(cè)失敗", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

實(shí)現(xiàn)效果

Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能

到此,相信大家對(duì)“Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI