概述

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. sql语句查询执行顺序

    http://blog.csdn.net/bitcarmanlee/article/details/51004767

  2. @SpringBootApplication注解理解

    @SpringBootApplication包含三个有用的注解,包括 @SpringBootConfiguration:看源码其实就是@Configuration,表示当前类是一个配置类,就像xml配 ...

  3. 【转】浏览器输入URL后发生了什么

    转自:http://www.cnblogs.com/webdeve/p/7865520.html本文摘要: 输入网址 当我们在浏览器输入网址并回车后,一切从这里开始. 一.DNS域名解析 我们在浏览器 ...

  4. 剑指Offer_编程题之重建二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  5. 解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=653 什么是php-fpm: php-fpm即FastCGI进程管理器,用于控制php的内存和进程等. 操作环境: ...

  6. 关于PHP处理Json数据的例子

    最近工作需要在原来静态看板(大屏)页面的基础上,实现数据的动态展示,而且需要定时刷新. 接到任务后就马不停蹄的开始修改页面: 显然这个需求最好的解决方法就是用Ajax对后台数据进行定时请求,在前端页面 ...

  7. BZOJ_3653_谈笑风生_树状数组

    BZOJ_3653_谈笑风生_树状数组 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道 高明到哪里去了”. ...

  8. BZOJ_2561_最小生成树_最小割

    BZOJ_2561_最小生成树_最小割 题意: 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条 ...

  9. cocoapods安装及使用其中 添加新源: gem sources -a https://ruby.taobao.org/

    一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...

  10. 关于throw、throws、try--catch的问题

    首先回顾概念 throws表示出现异常的一种可能性,并不一定会发生这些异常 throw则是抛出了异常,执行throw则一定抛出了某种异常 try--catch try语句用大括号{}指定了一段代码,该 ...