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日

相关文章

  • IDEA 2019.2.3破解激活教程(亲测有效)

    IDEA 2019.2.3破解激活教程(亲测有效) 什么是IDEA IntelliJ IDEA是一款由JetBrains公司开发的Java语言集成开发环境,具有代码智能提示、重构、自动编译和调试等功能。 下载安装IDEA 1.从IntelliJ IDEA官网下载IDEA的安装包并安装。 2.打开IDEA,选择导入项目或新建项目,然后在设置中找到“注册”选项。…

    other 2023年6月27日
    00
  • java中反射和注解的简单使用方法

    使用反射和注解是Java编程中的重要技术,允许Java程序动态地获取和操作应用程序运行时的信息。在本攻略中,我将详细解释如何在Java中使用反射和注解。 反射 反射的概念 反射是Java中一个强大的机制,它允许程序员在运行时获取一个类的信息(比如成员变量、方法和构造函数等),并且可以使用java.lang.reflect包实现在程序运行时调用这些信息所表示的…

    other 2023年6月27日
    00
  • 苹果watchOS 3开发者预览版Beta3已知更新内容汇总

    苹果watchOS 3开发者预览版Beta3已知更新内容汇总 简介 本文总结了苹果watchOS 3开发者预览版Beta3的已知更新内容。这些更新内容包含了新特性、改进和已知问题,可以帮助开发者更好地了解watchOS 3的最新进展情况。 新特性 Siri 支持更多用途,如起步跑步、网络搜索和音乐播放。 增强了语音识别的准确性和响应速度。 手势 可以快速滑动…

    other 2023年6月26日
    00
  • 浅析BootStrap栅格系统

    浅析BootStrap栅格系统 什么是BootStrap栅格系统? BootStrap栅格系统是一种用于构建响应式网页布局的前端框架。它基于栅格系统的概念,将页面划分为12个等宽的列,通过在不同屏幕尺寸下的列的组合来实现灵活的布局。 栅格系统的基本原理 BootStrap栅格系统的基本原理是将页面划分为12个等宽的列,并通过CSS样式来控制每个列在不同屏幕尺…

    other 2023年7月28日
    00
  • java调用FFmpeg实现视屏压缩功能的详细步骤

    让我们来一步步讲解如何使用Java调用FFmpeg实现视频压缩的功能。 前置条件 在开始之前,需要安装FFmpeg工具,并且配置好环境变量。可以通过以下命令检查FFmpeg是否安装成功: ffmpeg -version 步骤一:导入FFmpeg库 首先,需要在Java项目中导入FFmpeg库,以便后续调用相应的方法。可以使用以下Maven依赖: <de…

    other 2023年6月26日
    00
  • Python理解递归的方法总结

    Python理解递归的方法总结 什么是递归? 递归是指函数直接或间接调用自身的一种技巧。递归函数在调用过程中将参数不断地传递下去,并在每一层的函数调用中去解决更小规模的问题,直至到达某个基础情况,然后返回结果,最终建立一个递归结构的处理方式。 递归在一些编程问题中有很好的应用,例如在算法、数学等领域。学习递归的方法可以帮助我们更好地掌握 Python 编程语…

    other 2023年6月27日
    00
  • IP地址与整数之间的转换实现代码(asp.net)

    当将IP地址与整数之间进行转换时,可以使用以下代码实现: using System; using System.Net; public class IPAddressConverter { public static long IPToLong(string ipAddress) { IPAddress ip = IPAddress.Parse(ipAddr…

    other 2023年7月30日
    00
  • PowerShell复制命令行历史命令方法

    当你在使用PowerShell时,通过命令行输入大量的命令是非常常见的操作。不过,重复输入先前使用过的命令可能很烦人,特别是当命令很长的时候。此时,PowerShell的复制命令行历史命令方法(Copy Command Line History)就派上用场了。在接下来的攻略中,我们将详细讲解如何使用它。 步骤1:查看历史命令 要使用复制命令行历史命令方法,你…

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