概述

Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库。建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表。本文主要讲解Andriod开发中Sqlite的简单应用(增删改查),仅供学习分享使用。

涉及知识点

  1. SQLiteOpenHelper 管理创建数据库和版本管理的帮助类(抽象类)。
  2. onCreate 创建数据表的方法
  3. execSQL 执行一个非Select的语句,没有返回信息。
  4. SQLiteDatabase 管理Sqlite数据的对象,显示提供一组方法来管理数据库(CRUD)。
  5. SimpleCursorAdapter 一个简易的适配器,用来将Cursor适配数据到控件上。
  6. ContentValues 存储一组数据值(key-value)。

示例效果图

如下图所示:

数据库帮助类

代码如下:

 package com.hex.demosqlite;

 import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Administrator on 2019/4/4.
*/
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME="persons.db"; private static final int DB_VERSION=1; public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
} /**
* 创建数据库,指定数据库名称,版本号
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table person(_id integer primary key autoincrement not null, name char(10),nickname char(10))";
db.execSQL(sql);
} /**
* 数据库升级
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(newVersion>oldVersion){
onCreate(db);
}
}
}

新增(Insert)

代码如下:

  /**
* 新增
*
* @param v
*/
public void add(View v) {
/** //一般不使用此种方法,因为execSQL方法没有返回值
String sql="insert into person(name,nickname)values('宋江','及时雨')";
db.execSQL(sql);
*/
ContentValues values = new ContentValues();
values.put("name", "宋江");
values.put("nickname", "及时雨");
//返回值为插入行的行号
long result = db.insert("person", null, values);
if (result > 0) {
Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();
}
}

查询(Query)

代码如下:

   /**
* 查询
*
* @param v
*/
public void query(View v) {
/*
String sql="select * from person where name=?";
Cursor cursor = db.rawQuery(sql,new String[]{"宋江"});
*/
//columns 如果为空,则表示所有列
Cursor cursor = db.query("person", null, "name=?", new String[]{"宋江"}, null, null, null);
while (cursor.moveToNext()) {
int nameIndex = cursor.getColumnIndex("name");
int nickIndex = cursor.getColumnIndex("nickname");
String nameValue = cursor.getString(nameIndex);
String nickValue = cursor.getString(nickIndex);
String s = "name=" + nameValue + ",nickname=" + nickValue;
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
adaper.swapCursor(cursor);
adaper.notifyDataSetChanged();
}

修改(Update)

代码如下:

     /**
* 更新
*
* @param v
*/
public void update(View v) {
// String sql="update person set nickname=? where name=?"; ContentValues values = new ContentValues();
values.put("nickname", "及时雨2");
//更新语句受影响的行数
int result = db.update("person", values, "name=?", new String[]{"宋江"});
if (result > 0) {
Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "更新失败", Toast.LENGTH_SHORT).show();
}
}

删除(Delete)

代码如下:

   /**
* 删除
*
* @param v
*/
public void delete(View v) {
//String sql="delete person where name=?"; //受删除语句影响的行数
int result = db.delete("person", "name=?", new String[]{"宋江"});
if (result > 0) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "没有删除成功", Toast.LENGTH_SHORT).show();
}
}

备注

千里之行,始于足下!

一起学Android之Sqlite的更多相关文章

  1. Android 操作SQLite基本用法

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...

  2. android安卓 SQLite教程:内部架构及SQLite使用办法

    SQLite 介绍 SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API ...

  3. 学Android开发 这19个开发工具助你顺风顺水

    学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...

  4. 【Android】SQLite基本用法(转)

    在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...

  5. Android之SQLite数据存储

    一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...

  6. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  7. Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...

  8. Android开发学习之路-该怎么学Android(Service和Activity通信为例)

    在大部分地方,比如书本或者学校和培训机构,教学Android的方式都基本类似,就是告诉先上原理方法,然后对着代码讲一下. 但是,这往往不是一个很好的方法,为什么? ① 学生要掌握这个方法的用途,只能通 ...

  9. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

随机推荐

  1. Unite Beijing 2018 参会简要分享

    一. Training Day 主讲人:鲍建运 操作:马瑞 课程包括较为完整的功能,如灯光设置,角色动画控制,Cinemachine,Timeline,AI寻路,以及最新的Post Processin ...

  2. PAT1093: Count PAT's

    1093. Count PAT's (25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng The strin ...

  3. linux下activemq安装与配置

    一.下载:apache-activemq-5.14.0-bin.tar.gz http://activemq.apache.org/activemq-5140-release.html   二.安装a ...

  4. Tiny4412 烧写uboot到emmc步骤

    将uboot写入emmc,并通过EMMC驱动,不在只用SD卡启动 烧写uboot的之前用如下命令查看EMMC卡信息及分区信息: mmcinfo 0: 查看mmc卡信息, 0表示SD卡:1表示emmc卡 ...

  5. awk高级玩法

    1. 程序元素 一个awk 程序是一对以模式(pattern) 与大括号框起来的操作(action) 组合而成的,或许,还会加上实现操作细节的函数(function ) .针对每个匹配于输人数据的模式 ...

  6. 配置phpstorm自动上传代码

    本地的项目目录是 D:\www\guandan 虚拟机上的项目目录是 /var/www/guandan

  7. 任务调度--使用java.util.Timer实现

    任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务. 举个例子,比如说我们希望一个系统每周日晚上9点都将数据库文件备份一次,这时我们就可以使用任务调度来实现.为了更加的方便,我们需要 ...

  8. VMware12下CentOS 7安装教程

    CentOS 7 DVD安装光盘(百度搜索CentOS即可找到官方主页):VMware Workstation 12 Pro及以上软件: 启动VMware Workstation 12 Pro程序,在 ...

  9. 数据分析工具Pandas

        参考学习资料:http://pandas.pydata.org 1.什么是Pandas? Pandas的名称来自于面板数据(panel data)和Python数据分析(data analys ...

  10. php一些需要注意的点

    1,类的自动加载: spl_autoload_register(function ($class_name) { require_once $class_name . '.php';}); autol ...