Android SQLite数据库连接实现登录功能

yizhihongxing

Android SQLite数据库连接实现登录功能攻略

1. 创建数据库和表格

首先,我们需要创建一个SQLite数据库和一个用于存储用户信息的表格。可以在SQLiteOpenHelper类中实现这一步骤。

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = \"UserDB\";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = \"User\";
    private static final String COLUMN_ID = \"id\";
    private static final String COLUMN_USERNAME = \"username\";
    private static final String COLUMN_PASSWORD = \"password\";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTableQuery = \"CREATE TABLE \" + TABLE_NAME + \"(\"
                + COLUMN_ID + \" INTEGER PRIMARY KEY AUTOINCREMENT, \"
                + COLUMN_USERNAME + \" TEXT, \"
                + COLUMN_PASSWORD + \" TEXT)\";
        db.execSQL(createTableQuery);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String dropTableQuery = \"DROP TABLE IF EXISTS \" + TABLE_NAME;
        db.execSQL(dropTableQuery);
        onCreate(db);
    }
}

2. 注册用户

在注册用户时,我们需要将用户提供的用户名和密码插入到数据库表格中。

public class MainActivity extends AppCompatActivity {
    private EditText usernameEditText;
    private EditText passwordEditText;
    private Button registerButton;

    private DatabaseHelper databaseHelper;

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

        usernameEditText = findViewById(R.id.usernameEditText);
        passwordEditText = findViewById(R.id.passwordEditText);
        registerButton = findViewById(R.id.registerButton);

        databaseHelper = new DatabaseHelper(this);

        registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = usernameEditText.getText().toString();
                String password = passwordEditText.getText().toString();

                SQLiteDatabase db = databaseHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put(DatabaseHelper.COLUMN_USERNAME, username);
                values.put(DatabaseHelper.COLUMN_PASSWORD, password);
                db.insert(DatabaseHelper.TABLE_NAME, null, values);

                Toast.makeText(MainActivity.this, \"User registered successfully\", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

3. 用户登录

在用户登录时,我们需要查询数据库表格,检查提供的用户名和密码是否匹配。

public class LoginActivity extends AppCompatActivity {
    private EditText usernameEditText;
    private EditText passwordEditText;
    private Button loginButton;

    private DatabaseHelper databaseHelper;

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

        usernameEditText = findViewById(R.id.usernameEditText);
        passwordEditText = findViewById(R.id.passwordEditText);
        loginButton = findViewById(R.id.loginButton);

        databaseHelper = new DatabaseHelper(this);

        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = usernameEditText.getText().toString();
                String password = passwordEditText.getText().toString();

                SQLiteDatabase db = databaseHelper.getReadableDatabase();
                String[] projection = {DatabaseHelper.COLUMN_USERNAME, DatabaseHelper.COLUMN_PASSWORD};
                String selection = DatabaseHelper.COLUMN_USERNAME + \" = ? AND \" + DatabaseHelper.COLUMN_PASSWORD + \" = ?\";
                String[] selectionArgs = {username, password};
                Cursor cursor = db.query(DatabaseHelper.TABLE_NAME, projection, selection, selectionArgs, null, null, null);

                if (cursor.moveToFirst()) {
                    Toast.makeText(LoginActivity.this, \"Login successful\", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(LoginActivity.this, \"Invalid username or password\", Toast.LENGTH_SHORT).show();
                }

                cursor.close();
            }
        });
    }
}

以上是实现Android SQLite数据库连接并实现登录功能的完整攻略。在注册用户和用户登录的示例中,我们使用了DatabaseHelper类来创建数据库和表格,并使用SQLiteDatabase类执行数据库操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android SQLite数据库连接实现登录功能 - Python技术站

(0)
上一篇 2023年8月21日
下一篇 2023年8月21日

相关文章

  • Redis 数据类型的详解

    Redis 数据类型的详解 Redis 是一种非常流行的内存键值数据库,它提供了多种不同的数据类型来存储和操作数据。这些数据类型包括:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sorted set)等。在本文中,我们将详细讲解这些数据类型以及如何在 Redis 中使用它们。 字符串(string) 字符串是 Red…

    other 2023年6月27日
    00
  • 微信小程序的生命周期的详解

    以下是关于“微信小程序的生命周期的详解”的完整攻略,包括基本概念、生命周期函数、示例和注意事项。 基本概念 微信小程序的生命周期是指小程序从启动到销毁的整个过程。在这个过程中,小程序会依次执行一系列的生命周期函数,以完成各种初始化、渲染、交互等操作。 生命周期函数 微信小程序的生命周期函数包括以下几个: onLaunch:小程序初始化时触发,全局只触发一次。…

    other 2023年5月7日
    00
  • 性能测试-详细的 TPS 调优笔记

    性能测试-详细的 TPS 调优笔记 背景 在开发过程中,性能测试是非常重要的一环。而其中 TPS(Transactions Per Second,每秒事务处理数)是衡量系统性能指标的重要参数。在进行性能测试时,调优系统 TPS,可以使得系统在高并发下稳定运行,保证用户体验。 下面是我对 TPS 调优的笔记,分享给各位。 TPS 调优方法 方法一:增加系统资源…

    其他 2023年3月28日
    00
  • 获取App.config配置文件中的参数值

    获取App.config配置文件中的参数值可以通过.NET Framework中的ConfigurationManager类实现。 具体步骤如下: 在项目中添加App.config文件,添加相应的配置项。示例代码如下: <?xml version="1.0" encoding="utf-8" ?> <…

    other 2023年6月25日
    00
  • golang通过递归遍历生成树状结构的操作

    下面是详细讲解 golang 通过递归遍历生成树状结构的操作的完整攻略。 操作步骤 定义节点结构体 首先需要定义节点结构体,表示每一个节点的信息。 type Node struct { ID int // 节点 ID Name string // 节点名称 ParentID int // 父节点 ID Children []*Node // 子节点 } 创建…

    other 2023年6月27日
    00
  • javascrip关于继承的小例子

    我们来详细讲解一下“JavaScript关于继承的小例子”的完整攻略。 基本概念 在 JavaScript 中,继承是一种重要的功能,它允许我们通过创建一个新对象来扩展已有的对象。通过继承,我们可以避免重复编写相同的代码,提高代码复用性,同时也可以提高程序的灵活性。 JavaScript 中的继承实现方式有很多种,其中最常见的两种方式是原型链继承和类继承。 …

    other 2023年6月27日
    00
  • 宽带常见故障及解决方法

    宽带常见故障及解决方法 宽带故障是生活中常见的问题之一,其原因可能包括家庭网络故障,运营商线路故障等。下面是几种宽带常见故障及解决方法来帮助您解决网络问题。 故障1:网络连接失败 解决方法 首先检查网络连接设置,确保电脑上的DHCP服务是否开启。确定DHCP服务开启后,网络连接应该能够自己获取IP地址,并正确连接到网络。 如果DHCP服务已经正常开启,但是连…

    other 2023年6月27日
    00
  • 详析Python面向对象中的继承

    详析Python面向对象中的继承 1. 继承的基本概念 继承是面向对象编程中的一个重要概念。通过继承,子类可以继承父类的属性和方法,同时还可以在此基础上添加新的属性和方法或者对父类的方法进行重写。 在Python中,使用关键字class来声明一个类,使用()来表示该类的父类,即继承的基类。一个子类可以有多个父类,此时使用()将多个基类名称以逗号隔开即可。 2…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部