您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Android基于Sqlite怎么實(shí)現(xiàn)注冊(cè)和登錄功能”吧!
項(xiàng)目的圖片結(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ù)時(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)效果
到此,相信大家對(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í)!
免責(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)容。