Android Studio 通过登录功能介绍SQLite数据库的使用流程

前言:

SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。

SQLite数据库,它广泛用于包括浏览器、IOS,Android以及一些便携需求的小型web应用系统。

接下来,我会通过一个登录功能来介绍一下SQLite数据库在实际Android项目中的使用。

SQLite数据库的常用操作:

包含建表、删除表、增、删、改、查,SQL语法如下:

建表:

create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)

删除表:

drop table if exists 表名

增:

insert into 表名 (字段1,字段2,字段3 ...) values (值1,值2,值3 ...);

insert into 目标数据表 select * from 源数据表;

删:

delete from 表名 where 条件表达式

改:

update 表名 set 字段1=值1,字段2=值2... where 条件表达式

查:

select * from 表名 where 条件表达式

实例:

1、首先先创建一个DBHelper类(DBOpenHelper.java)

在这里会执行建库、建表的操作

package com.hyl.dao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
/**
 * @programName: DBOpenHelper.java
 * @programFunction: database helper class
 * @createDate: 2018/09/29
 * @author: AnneHan
 * @version:
 * xx.  yyyy/mm/dd  ver  author  comments
 * 01.  2018/09/29  1.00  AnneHan  New Create
 */
public class DBOpenHelper extends SQLiteOpenHelper {
  public DBOpenHelper(Context context,String name, CursorFactory factory,
            int version){
    super(context, name, factory, version);
  }
  @Override
  //首次创建数据库的时候调用,一般可以执行建库,建表的操作
  //Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类型,0为false,1为true
  public void onCreate(SQLiteDatabase db){
    //user table
    db.execSQL("create table if not exists user_tb(_id integer primary key autoincrement," +
        "userID text not null," +
        "pwd text not null)");
  }
  @Override//当数据库的版本发生变化时,会自动执行
  public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
  }
}

2、进入登录界面

在点击登录按钮时,会去数据库里面进行查询,判断账号是否存在(Query查询范例)

/**
 * login event
 * @param v
 */
public void OnMyLoginClick(View v){
  //判断账号/密码是否有输入的处理...
  //调用DBOpenHelper (qianbao.db是创建的数据库的名称)
  DBOpenHelper helper = new DBOpenHelper(this,"qianbao.db",null,1);
  SQLiteDatabase db = helper.getWritableDatabase();
  //根据画面上输入的账号/密码去数据库中进行查询(user_tb是表名)
  Cursor c = db.query("user_tb",null,"userID=? and pwd=?",new String[]{参数1的值,参数2的值},null,null,null);
  //如果有查询到数据
  if(c!=null && c.getCount() >= 1){
    //可以把查询出来的值打印出来在后台显示/查看
    /*String[] cols = c.getColumnNames();
    while(c.moveToNext()){
      for(String ColumnName:cols){
        Log.i("info",ColumnName+":"+c.getString(c.getColumnIndex(ColumnName)));
      }
    }*/
    c.close();
    db.close();
    this.finish();
  }
  //如果没有查询到数据
  else{
    Toast.makeText(this, "手机号或密码输入错误!", Toast.LENGTH_SHORT).show();
  }
}

3、如果账号不存在,则需要去注册一个新账号(Insert新增范例)

import com.hyl.dao.DBOpenHelper;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
 * register event
 * @param v
 */
public void OnMyRegistClick(View v){
  //对用户输入的值的格式进行判断的处理...
  //调用DBOpenHelper
  DBOpenHelper helper = new DBOpenHelper(this,"qianbao.db",null,1);
  SQLiteDatabase db = helper.getWritableDatabase();
  //根据画面上输入的账号去数据库中进行查询
  Cursor c = db.query("user_tb",null,"userID=?",new String[]{参数1的值},null,null,null);
  //如果有查询到数据,则说明账号已存在
  if(c!=null && c.getCount() >= 1){
    Toast.makeText(this, "该用户已存在", Toast.LENGTH_SHORT).show();
    c.close();
  }
  //如果没有查询到数据,则往数据库中insert一笔数据
  else{
    //insert data
    ContentValues values= new ContentValues();
    values.put("userID","画面上输入的值");
    values.put("pwd","画面上输入的值");
    long rowid = db.insert("user_tb",null,values);
    Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();//提示信息
    this.finish();
  }
  db.close();
}

4、如果用户忘记密码,则需要进行密码重置(Update修改范例)

  /**
 * confirm event
 */
private void confirmInfo() {
  //对界面上用户输入的值进行判断的处理...

  //调用DBOpenHelper
  DBOpenHelper helper = new DBOpenHelper(this,"qianbao.db",null,1);
  SQLiteDatabase db = helper.getWritableDatabase();
  //根据画面上输入的账号/密码去数据库中进行查询
  Cursor c = db.query("user_tb",null,"userID=?",new String[]{editPhone.getText().toString()},null,null,null);
  //如果有查询到数据,说明账号存在,可以进行密码重置操作
  if(c!=null && c.getCount() >= 1){
    ContentValues cv = new ContentValues();
    cv.put("pwd", editPhone.getText().toString());//editPhone界面上的控件
    String[] args = {String.valueOf(editPhone.getText().toString())};
    long rowid = db.update("user_tb", cv, "userID=?",args);
    c.close();
    db.close();
    Toast.makeText(this, "密码重置成功!", Toast.LENGTH_SHORT).show();
    this.finish();
  }
  //如果没有查询到数据,提示用户到注册界面进行注册
  else{
    new AlertDialog.Builder(this)
        .setTitle("提示")
        .setMessage("该用户不存在,请到注册界面进行注册!")
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int whichButton) {
            setResult(RESULT_OK);
            Intent intent=new Intent(当前重置密码界面.this,注册界面.class);
            当前重置密码界面.this.startActivity(intent);
          }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int whichButton) {
            return;
          }
        })
        .show();
  }
}

以上是一个登录功能完整的处理流程,包含了建库、增/改/查数据等操作,希望能让大家对SQLite数据库在实际项目中的使用有一个大概了解,不足之处,欢迎指正。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Rxjava2_Flowable_Sqlite_Android数据库访问实例

    一.使用Rxjava访问数据库的优点: 1.随意的线程控制,数据库操作在一个线程,返回数据处理在ui线程 2.随时订阅和取消订阅,而不必再使用回调函数 3.对读取的数据用rxjava进行过滤,流式处理 4.使用sqlbrite可以原生返回rxjava的格式,同时是响应式数据库框架 (有数据添加和更新时自动调用之前订阅了的读取函数,达到有数据添加自动更新ui的效果, 同时这个特性没有禁止的方法,只能通过取消订阅停止这个功能,对于有的框架这反而是一种累赘) 二.接下来之关注实现过程: 本次实现用rx

  • Android SQLite数据库进行查询优化的方法

    前言 数据库的性能优化行业里面普遍偏少,今天这篇希望给大家带来点帮助 SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单 我们在使用SQLite进行数据存储查询的时候,要进行查询优化,这里就会用到索引,C端的数据量大部分情况下面虽然不是很大,但良好的索引建立习惯往往会带来不错的查询性能提升,同时在未知的将来经得住更大数据的考验,那如何优化数据库查询呢,下面我们用例子一一演示下. 先建个测试表table1,包含了三个索引: sq

  • Android中的sqlite查询数据时去掉重复值的方法实例

    1.方式一: /** * 参数一:是否去重 * 参数二:表名 * 参数三:columns 表示查询的字段,new String[]{MODEL}表示查询该表当中的模式(也表示查询的结果) * 参数思:selection表示查询的条件,PHONE_NUMBER+" = ?" 表示根据手机号去查询模式 * 参数五:selectionArgs 表示查询条件对应的值,new String[]{phoneNumber}表示查询条件对应的值 * 参数六:String groupBy 分组 * 参数

  • android 中 SQLiteOpenHelper的封装使用详解

    在android中常用存储数据的基本就三种,sqlite,SharedPreferences,文件存储,其中针对于对象存储,使用sqlite比较多,因为可以对其进行增删改查.本文主要讲解SQLiteOpenHelper的封装使用,代码引用自https://github.com/iMeiji/Toutiao 具体使用 主要方法包括创建数据库和数据库的升级. 构造函数:包含三个参数,context,name,factory,version onCreate:主要创建了三张表单 getDatabase

  • Android中SQLite数据库知识点总结

    SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需要占用几百kB的存储空间,这也是Android移动设备采用SQLite数据库的重要原因之一. SQLite 是遵守ACID的关系型数据库管理系统.这里的ACID是指数据库事务正确执行的4个基本要素,即原子性(Atomicity).致性 ( Consistency). 隔离性( lolation).

  • Android Studio 通过登录功能介绍SQLite数据库的使用流程

    前言: SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源的世

  • Android Studio实现登录功能案例讲解

    LoginActivity.java 包 com.hyx.example.mymap; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Ha

  • Android Studio常用快捷键功能说明

    Android Studio 是谷歌基于IntelliJ IDEA开发的安卓开发工具,有点类似 EcliPSe ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,基于Gradle的构建支持. Android Studio常用快捷键 Ctrl+D: 集合了复制和粘贴两个操作,如果有选中的部分就复制选中的部分,并在选中部分的后面 粘贴出来,如果没有选中的部分,就复制光标所在的行,并在此行的下面粘贴出来. Ctrl+空格: 输入代码时按此组合键会列出与之相匹配

  • Android Studio 实现九宫格功能

    运行结果 1.图 2.动图 九个图标是设置的,你也可以设置4 * 4 = 16都可以. 3.分享个GIF动图的.exe 代码activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http

  • Android studio实现画板功能

    简单概述 在日常生活中,我们经常会突发一些奇思妙想,或是一个画面,或是几个符号.这时候无法使用拍照或者打字功能实现,想拿笔记下又身边找不到笔.于是我琢磨能不能做一个手机端的画板. 效果图 实现过程 项目布局很简单 让我们来看代码:首先声明画笔,画板,和坐标 public class MainActivity extends AppCompatActivity{ Paint paint; Canvas canvas; ImageView imageview; Bitmap bitmap,newbi

  • Android Studio debug.keystore位置介绍

    如果你在网上搜debug.keystore的位置,大部分文章都会告诉你在 C:\Users\XXX\.android 目录下,但我电脑的该目录下确实没有这个文件,放入同事的debug.keystore也不会生效. 后来在Android SDK的子目录.android下搜到了debug.keystore文件,猜测的原因是IDE里做了配置,但也不知道是哪里修改的. 最后在 StackOverflow 上找到一个靠谱答案,链接:http://stackoverflow.com/a/30908688 意

  • 实例讲解Android App使用自带的SQLite数据库的基本方法

    SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已.虽然SQLite的有点很多,但并不是如同PC端的mysql般强大,而且android系统中不允许通过JDBC操作远程数据库,所以只能通过webservice等手段于php.servlet交互获取数据. 基础 SQLiteDatabase类,代表了一个数据库对象,通过SQLiteDatabase来操作管理数据库. 一些基本的用法: static  SQLiteDa

  • Android利用listview控件操作SQLite数据库实例

    在本实例中,首先我们利用SQLiteOpenHelper类建立一个数据库,并写好增.删.查等方法,通过SimpleCursorAdapter连接listview实现数据库的增加.查询以及长按删除的功能. 首先,我们先认识一下什么是SQLiteOpenHelper类. Android为了操作SQlite数据库,提供了SQLiteDatabase类,其内封装了insert .delete.update .query .执行SQL命令等操作.同时又为SQLiteDatabase提供了一个辅助类,SQL

  • Android Studio中debug功能详解

    本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下 运行debug模式 1. 进入debug - 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键Shift+F9 - 点击图中红色圆圈圈起的右边按钮,可以选择正在运行的进程attach debugger 1. 打断点:鼠标点击编辑框左侧,出现红色圆点 断点分类 这张图可以看出断点也有行断点.方法断点.字段断点.异常断点.其实打断点仔细观察也可以发现它们的标识图片是不同的,就是

  • Springboot项目中内嵌sqlite数据库的配置流程

    目录 Springboot中内嵌sqlite数据库配置 在idea中配置Sqlite springboot环境下配置使用sqlite数据库 pom文件导入mybatis和sqlite依赖 application.properties配置 使用 Springboot中内嵌sqlite数据库配置 在idea中配置Sqlite 选择右侧工具栏的datasource,点击加号,选择datasource,点击sqlite. 下载驱动,选择数据库存储位置. 直接指定在项目根目录下(放在resources下各

随机推荐