Android用户登陆与注册功能的简单实现(SQLite)

这里我只用简单的demo作示范,具体需求具体实现。

一、创建登录界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <EditText
        android:id="@+id/account"
        android:layout_width="240dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:textSize="20sp"
        android:layout_marginTop="180dp"
        android:inputType="number"
        android:maxLength="10"
        android:hint="Account number"
        android:drawableLeft="@drawable/ic_baseline_account_circle_24">

    </EditText>
    <EditText
        android:id="@+id/password"
        android:layout_width="240dp"
        android:layout_height="60dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:textSize="20sp"
        android:inputType="textPassword"
        android:maxLength="10"
        android:hint="Password"
        android:drawableLeft="@drawable/ic_baseline_fingerprint_24">

    </EditText>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:gravity="center">
        <Button
            android:id="@+id/land"
            android:layout_width="90dp"
            android:layout_height="50dp"
            android:text="land"
            android:onClick="land"
            >
        </Button>
        <Button
            android:id="@+id/login"
            android:layout_width="90dp"
            android:layout_height="50dp"
            android:text="login"
            android:layout_marginLeft="40dp"
            android:onClick="login"
            >
        </Button>
    </LinearLayout>

</LinearLayout>

 二、构建数据库

 在用SQLite作为android的数据库时我们需要自己写一个工具类来实现数据库的一系列操作,在MainActivity.java同目录下创建MySqliteOpenHelper.java

package com.example.login;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class MySqliteOpenHelper extends SQLiteOpenHelper {
    private static SQLiteOpenHelper mInstance;

    public static synchronized SQLiteOpenHelper getmInstance(Context context){
        if (mInstance==null){
            mInstance=new MySqliteOpenHelper(context,"derryDB.db",null,1);
        }
        return mInstance;
    }

    private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
//创建数据表users,表中包含_account和_password两个字段,为了方便我把他们的类型全部设为text
        String  sql="create table users(_account text,_password text)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

在这里除了创建数据表那里不同的项目会有变动之外,其他地方很少有变动,建议保存这段代码以便以后直接拿来用。在软件第一次运行时这个数据库连同表便会一同创建,数据库的位置在这里:

点击软件右边的Device File Explorer,路径Data->Date->com.example.项目名称->Database

比如我创建的项目名为login

 有了这个工具类之后就可以把用户的账号和密码存到数据库里了。

三、实现登陆和注册功能

在第一节里我们写了两个按钮,登陆和注册,现在就可以写他们点击之后的动作了。

package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import java.util.Objects;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }
    public void land(View view){//这里的land对应登陆按钮里的onclick,按钮按下便会调用此函数
       EditText account=findViewById(R.id.account);//获取id为account的EditText输入值
        EditText password=findViewById(R.id.password);//获取id为password的EditText输入值
        String got_account=account.getText().toString();//将得到的值转为字符串
        String got_password=password.getText().toString();
        SQLiteOpenHelper helper=MySqliteOpenHelper.getmInstance(this);
        SQLiteDatabase db=helper.getReadableDatabase();//登陆用到的是读操作,这里用写操作也不会有问题
        if (db.isOpen()){//判断数据库是否成功打开
            Cursor cursor=db.rawQuery("select * from users",null);//取users数据表中所有用户数据,cursor是迭代游标,用于遍历操作
            while (cursor.moveToNext()){//遍历所有用户数据
                @SuppressLint("Range") String _account=cursor.getString(cursor.getColumnIndex("_account"));//获取每一个用户的账号
                @SuppressLint("Range") String _password=cursor.getString(cursor.getColumnIndex("_password"));//获取每一个用户的密码
                if (Objects.equals(_account,got_account)&&Objects.equals(_password, got_password)){//判断此次遍历到的用户账号和密码是否和用户输入的账号和密码相同
                    Log.e("land success",_account);
                    Intent ma2 = new Intent(MainActivity.this, MainActivity2.class);//跳转至登陆成功的界面,MainActivity是当前界面的java文件名,MainActivity2是要跳转的界面对应的java文件
                    startActivity(ma2);
                }
            }
            cursor.close();//关闭迭代游标
            db.close();//关闭数据库
        }
    }
    public void login(View view){//对应注册按钮
        EditText account=findViewById(R.id.account);
        EditText password=findViewById(R.id.password);
        String got_account=account.getText().toString();
        String got_password=password.getText().toString();
        SQLiteOpenHelper helper=MySqliteOpenHelper.getmInstance(this);
        SQLiteDatabase db=helper.getWritableDatabase();
        if (db.isOpen()){
            String sql="insert into users(_account,_password) values(?,?)";//因为注册账号和密码需要获取用户输入的信息,所以我们暂时用问号代替,下面再用Object替代
            db.execSQL(sql,new Object[]{got_account,got_password});
            Log.e("login success",got_account);
        }
        db.close();
    }
}

四、登陆后的界面

右键软件左边的项目文件中的com.example.项目名 文件夹->New->Activity->Empty Activity

 

 界面自由发挥,这里附上我的:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="land success!"
        android:textSize="50sp"
        android:layout_gravity="center">

    </TextView>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="return to the land page"
        android:textSize="25sp"
        android:layout_marginTop="80dp"
        android:onClick="return_land">

    </Button>
</androidx.appcompat.widget.LinearLayoutCompat>

这里写了一个按钮,为了演示返回登录界面的动作,对应java文件:

package com.example.login;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;

public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }
    public void return_land(View view){
        finish();//返回登录界面
    }
}
  • 13
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
实现登录注册功能需要以下几个步骤: 1. 创建数据库和表 在 Android Studio 中创建一个 SQLite 数据库,然后创建一个用户表,其中包括用户名和密码两个字段。 2. 创建登录和注册界面 可以使用 Android Studio 提供的 UI 设计工具来创建登录和注册界面。登录界面应该包括一个用户名和密码输入框,以及一个登录按钮。注册界面应该包括一个用户名和密码输入框,以及一个注册按钮。 3. 实现注册功能注册界面中,当用户点击注册按钮时,应该将用户输入的用户名和密码插入到用户表中。 4. 实现登录功能 在登录界面中,当用户点击登录按钮时,应该从用户表中查询用户输入的用户名和密码是否匹配。如果匹配,则跳转到主界面;否则提示用户输入错误。 下面是一个简单的示例代码: ``` // 注册功能 public void register(String username, String password) { SQLiteDatabase db = getWritableDatabase(); ContentValues values = new ContentValues(); values.put("username", username); values.put("password", password); db.insert("user", null, values); db.close(); } // 登录功能 public boolean login(String username, String password) { SQLiteDatabase db = getReadableDatabase(); Cursor cursor = db.rawQuery("select * from user where username=? and password=?", new String[]{username, password}); boolean result = cursor.getCount() > 0; cursor.close(); db.close(); return result; } ``` 在这个示例代码中,我们使用了 SQLite 数据库来存储用户信息,实现注册和登录功能。但是这个示例代码还有很多不足之处,需要根据具体需求进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值