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日

相关文章

  • WindowsXP系统所占空间内存为什么总是很大?空间占用大的原因分析与解决方法介绍

    详细讲解“Windows XP系统所占空间内存为什么总是很大?空间占用大的原因分析与解决方法介绍” Windows XP是一个相对较旧的操作系统,它在发布时的硬件要求相对较低。然而,随着时间的推移,软件和硬件的发展,以及安全性和功能的更新,Windows XP系统所占用的空间内存逐渐增大。下面将详细分析Windows XP系统空间占用大的原因,并提供解决方法…

    other 2023年7月31日
    00
  • [工具推荐]001.flippdf使用教程

    [工具推荐]001.flippdf使用教程 什么是Flippdf? Flippdf是一种用于制作翻页效果电子书的工具,可以将PDF文件转换成具有翻页效果的电子书,适用于电子杂志、电子图书等多种场景。 如何使用Flippdf? 首先,需要下载并安装Flippdf软件,软件下载链接可以在官方网站获得。 安装完成后,打开软件,在首页可以选择“Import PDF”…

    其他 2023年3月29日
    00
  • Android仿今日头条滑动页面导航效果

    一、介绍 在Android开发中,实现滑动页面导航效果是比较常见的需求之一。本文针对如何实现仿今日头条的页面滑动导航效果进行详细讲解。 二、实现步骤 1.在布局文件中定义ViewPager和TabLayout控件,用于展示滑动页面和导航栏; 2.在Java代码中定义FragmentPagerAdapter,ViewPager的适配器;通过适配器承载Fragm…

    other 2023年6月20日
    00
  • Android Fragment多层嵌套重影问题的解决方法

    Android Fragment多层嵌套重影问题的解决方法攻略 在Android开发中,当使用Fragment进行多层嵌套时,可能会遇到重影问题,即在屏幕上显示多个相同的Fragment。这个问题通常是由于Fragment的生命周期管理不当导致的。下面是解决这个问题的完整攻略,包括两个示例说明。 1. 使用getChildFragmentManager() …

    other 2023年7月28日
    00
  • python 3.5 格式化字符串输出

    Python 3.5 格式化字符串输出 在Python中,我们经常需要输出一些带有特定格式的字符串。比如输出一个字符串要求每行的字符数保持在一定的范围内,或者输出一个固定长度的字符串,其中一些部分需要根据变量动态生成。Python中提供了许多方法来格式化字符串,下面我们就来介绍其中的一种方式——格式化字符串。 字符串格式化 字符串格式化是指将一个或多个值插入…

    其他 2023年3月28日
    00
  • 微信怎么查询注册时间?微信注册时间两种查询方法

    微信怎么查询注册时间? 微信是一款非常流行的社交媒体应用程序,许多人都想知道自己的微信注册时间。以下是两种查询微信注册时间的方法: 方法一:通过微信个人资料页面查询 打开微信应用程序并登录您的帐户。 在底部导航栏中,点击“我”选项卡,进入个人资料页面。 在个人资料页面上,向下滚动,直到找到“帐号与安全”部分。 点击“帐号与安全”部分下的“更多设置”选项。 在…

    other 2023年8月3日
    00
  • Hooks封装与使用示例详解

    下面是“Hooks封装与使用示例详解”的完整攻略。 1. Hooks简介 Hooks是React 16.8版本新增的一项特性,用于解决组件之间状态复用等问题。常见的Hooks有useState、useEffect、useContext等。 2. Hooks封装 Hooks的使用需要遵循一定的封装规则,方便组件复用。下面是Hooks封装的示例,以useFetc…

    other 2023年6月25日
    00
  • 在javascript中将负数转换为正数

    下面是关于“在 JavaScript 中将负数转换为正数”的完整攻略: 1. JavaScript 中的负数 在 JavaScript 中,负数是指小于零的数字。负数可以使用负号(-)表示,例如:-1、-2、-3 等。 2. 将负数转换为正数的方法 在 JavaScript 中,可以使用 Math.abs() 方法将负数转换为正数。该方法返回一个数的绝对值,…

    other 2023年5月7日
    00