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日

相关文章

  • 深入AndroidManifest.xml文件解析详解

    以下是使用标准的Markdown格式文本,详细讲解深入AndroidManifest.xml文件解析的完整攻略: 深入AndroidManifest.xml文件解析 AndroidManifest.xml是Android应用的清单文件,它包含了应用的基本信息、组件声明、权限要求等重要信息。深入理解和解析AndroidManifest.xml文件可以帮助我们更…

    other 2023年10月14日
    00
  • css样式加载顺序及覆盖顺序深入理解

    加载顺序 当浏览器解析 HTML 文件时,会按照先后顺序逐个加载每一个元素,并将其与样式层叠在一起呈现出最终的页面。 在加载样式时,浏览器会遵循以下顺序: 加载浏览器自带的样式表,如 user agent stylesheet。 加载外部样式表,如 link 标签所引用的样式表。 加载 style 标签中属于内部样式表的样式。 加载元素内的 style 属性…

    other 2023年6月25日
    00
  • 未能解析此远程名称:’www.***.com’解决办法

    简介 当我们在使用网络服务时,有时会遇到“未能解析此远程名称”的错误。这通常是由于DNS解析问题引起的。在本攻略中,我们将介绍如何解决“未能解析此远程名称”的问题。 步骤 以下是解决“未能解析此远程名称”的问题的步骤。 步骤1:检查网络连接 首先,我们需要检查我们的网络连接是否正常。我们可以尝试访问其他网站,例如Google或百度,以确保我们的网络连接正常。…

    other 2023年5月6日
    00
  • Lua极简入门指南:全局变量

    Lua极简入门指南:全局变量 介绍 Lua是一种轻量级的脚本语言,常用于嵌入式系统和游戏开发。本指南将带您了解如何使用Lua创建和操作全局变量。 全局变量的定义 在Lua中,全局变量是在程序的任何地方都可以访问的变量。要定义一个全局变量,只需在变量名前加上global关键字即可。 global.variable = 10 全局变量的访问 要访问全局变量,只需…

    other 2023年7月28日
    00
  • solr学习(一)安装与部署

    Solr学习(一)安装与部署 Solr是一款基于Lucene的开源搜索引擎,可以提供全文检索和分析功能。为了简化Solr的安装和部署过程,Solr官方提供了Solr的二进制发布包,本文将介绍如何使用二进制发布包进行Solr的安装和部署。 环境准备 在开始Solr的安装和部署之前,我们先需要对环境进行准备。需要安装的软件有Java Runtime Enviro…

    其他 2023年3月28日
    00
  • 详解使用Spring Boot开发Restful程序

    详解使用Spring Boot开发Restful程序攻略 简介 本攻略将详细介绍如何使用Spring Boot框架来开发Restful程序。Spring Boot是一个用于简化Spring应用程序开发的框架,它提供了自动配置和约定优于配置的原则,使得开发者可以更加专注于业务逻辑的实现。 步骤 步骤一:创建Spring Boot项目 首先,我们需要创建一个新的…

    other 2023年7月27日
    00
  • js实现完全自定义可带多级目录的网页鼠标右键菜单方法

    实现完全自定义可带多级目录的网页鼠标右键菜单的方法,一般需要以下步骤: 1. HTML结构 首先,创建一个HTML菜单结构,包含多级目录的层级关系,可以使用<ul>和<li>元素实现,例如: <ul id="menu"> <li> <a href="#">一级…

    other 2023年6月27日
    00
  • 使用Springboot注入带参数的构造函数实例

    使用Spring Boot可以方便地构建企业级应用程序。在使用Spring Boot构建应用程序时,我们通常使用依赖注入来处理对象之间的依赖关系。 在Spring Boot中,我们可以使用构造函数依赖注入的方式来注入带参数的类实例。下面是如何使用Spring Boot注入带参数的构造函数实例的完整攻略: 步骤一:添加构造函数 首先,为需要注入的类添加带参数的…

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