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

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日

相关文章

  • Java设计模式之浅谈模板方法模式

    Java设计模式之浅谈模板方法模式 什么是模板方法模式? 模板方法模式(Template Method Pattern)是一种行为型设计模式,它将一个算法的森步骤封装到一个抽象类中,并且使用一组抽象方法定义规定了算法的框架结构,从而使得算法的具体实现延迟到子类中去实现。模板方法是一种简单但是非常实用的模式,因为它把不变项与变化项隔离开来,提高了代码的可复用性…

    other 2023年6月26日
    00
  • java中string与date格式之间的转换

    Java中String与Date格式之间的转换 在Java中,String和Date是两种常用的数据类型。String类型用于表示字符串,而Date类型用于表示日期和时间。在实际开发中,我们经常需要将类型的日期转换为Date类型,或将Date类型的日期转换为String类型。本文将详细讲解Java中String与Date格式之间的换方法。 String转Da…

    other 2023年5月7日
    00
  • win7右键菜单找不到新建BMP图像的快捷方式怎么办?

    当你在Win7系统中右键菜单找不到新建BMP图像的快捷方式时,可以按照以下步骤排查和解决: 检查注册表是否有异常 Win7中菜单的显示是通过注册表来配置的。如果菜单条目不存在于注册表中,就不会显示在右键菜单中。 首先,打开注册表编辑器:Win+R键打开“运行”窗口,输入“regedit”,按回车键。 然后,进入注册表路径:HKEY_CLASSES_ROOT.…

    other 2023年6月27日
    00
  • python 拷贝特定后缀名文件,并保留原始目录结构的实例

    Python拷贝特定后缀名文件,并保留原始目录结构的实例攻略 在Python中,你可以使用shutil模块来拷贝文件,并使用os模块来处理目录结构。下面是一个完整的攻略,详细讲解了如何拷贝特定后缀名的文件,并保留原始目录结构。 步骤1:导入必要的模块 首先,你需要导入shutil和os模块,以便使用它们的函数和方法。 import shutil import…

    other 2023年8月5日
    00
  • WPF学习09:数据绑定之 Binding to List Data

    WPF学习09:数据绑定之 Binding to List Data 在WPF中,数据绑定是一项非常重要的功能,它可以让我们将UI元素与数据源进行绑定,使得数据的变化能够自动地反映到UI上。本文介绍如何绑定列表数据到WPF的UI元素中。 Binding to List Data 在WPF中,Binding to List Data是一种常见的数据绑定方式,它…

    其他 2023年3月28日
    00
  • gradle仓库配置

    Gradle是一种基于JVM的构建工具,它可以帮助我们管理项目依赖、构建项目、运行测试等。在使用Gradle构建项目时,我们需要配置仓库以便Gradle可以从仓库中下载所需的依赖。本文将详细介绍如何Gradle仓库。 步骤1:打build.gradle文件 首先,我们需要打开项目中的build.gradle文件。该文件位于项目根目录下,用于配置Gradle构…

    other 2023年5月8日
    00
  • java通过AOP实现全局日志打印详解

    Java通过AOP实现全局日志打印详解 1. 简介 AOP(面向切面编程)是一种编程范式,可以通过在运行时动态地将代码片段(称为“切面”)插入到程序的特定位置,从而实现一些横切关注点的统一处理。全局日志打印是一个常见的横切关注点,可以通过AOP来实现。 2. 准备工作 在使用AOP实现全局日志打印之前,需要先引入相关的依赖库。这里以使用Spring框架为例,…

    other 2023年6月28日
    00
  • 浅谈标签和JLabel类构造方法 原创

    浅谈标签和JLabel类构造方法 介绍 在Java中,标签(Label)是一种用于显示文本或图像的组件。JLabel类是Swing库中的一个组件,用于创建和管理标签。本文将详细讲解JLabel类的构造方法以及如何使用它来创建和定制标签。 构造方法 JLabel类提供了多个构造方法,用于创建不同类型的标签。以下是常用的构造方法: 1. JLabel() 这是J…

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