一起学Android之Sqlite
概述
Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库。建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表。本文主要讲解Andriod开发中Sqlite的简单应用(增删改查),仅供学习分享使用。
涉及知识点
- SQLiteOpenHelper 管理创建数据库和版本管理的帮助类(抽象类)。
- onCreate 创建数据表的方法
- execSQL 执行一个非Select的语句,没有返回信息。
- SQLiteDatabase 管理Sqlite数据的对象,显示提供一组方法来管理数据库(CRUD)。
- SimpleCursorAdapter 一个简易的适配器,用来将Cursor适配数据到控件上。
- 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的更多相关文章
- Android 操作SQLite基本用法
一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...
- android安卓 SQLite教程:内部架构及SQLite使用办法
SQLite 介绍 SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API ...
- 学Android开发 这19个开发工具助你顺风顺水
学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...
- 【Android】SQLite基本用法(转)
在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...
- Android之SQLite数据存储
一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- Android开发学习之路-该怎么学Android(Service和Activity通信为例)
在大部分地方,比如书本或者学校和培训机构,教学Android的方式都基本类似,就是告诉先上原理方法,然后对着代码讲一下. 但是,这往往不是一个很好的方法,为什么? ① 学生要掌握这个方法的用途,只能通 ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
随机推荐
- VS2010+OpenMP的简单使用
OpenMP是把程序中的循环操作分给电脑的各个CPU处理器并行进行.比如说我要循环运行100次,我的电脑有两个处理器,那OpenMP就会平均分给两个处理器并行运行,每个处理器运行50次.使用方法 1. ...
- sqlserver聚合索引(clustered index) / 非聚合索引(nonclustered index)的理解
1. 什么是聚合索引(clustered index) / 什么是非聚合索引(nonclustered index)? 可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索 ...
- Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- 【转载】JavaScript基础知识体系
前言 最近总是有一种感觉,对于知识没有积淀,很多时候都是忘记了哪里就去查一下,比如JS这种语言,很是浪费时间,如果能够把这些知识形成知识体系塞进大脑,做到即用即取就好了,那么就可以借助思维导图来帮助我 ...
- Python replace()方法
描述 Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. 语法 replace()方法语法: st ...
- counter.go
package engine func (engine *Engine) NumTokenIndexAdded() uint64 { return engine.numTokenIndexAd ...
- 硬木地板 JDFZ1667
Description 举行计算机科学家盛宴的大厅的地板为M×N (1<=M<=9, 1<=N<=9)的矩形.现在必须要铺上硬木地板砖.可以使用的地板砖形状有两种:1) 2×1 ...
- 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二)
作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第二篇,主要讲述发送端程序的原理和过程. 第一 ...
- 基于SDRAM的视频图像采集系统
本文是在前面设计好的简易SDRAM控制器的基础上完善,逐步实现使用SDRAM存储视频流数据,实现视频图像采集系统,CMOS使用的是OV7725. SDRAM控制器的完善 1. 修改SDRAM的时钟到1 ...
- java游戏开发杂谈 - 游戏物体
现实生活中,有很多物体,每个物体的长相.行为都不同. 物体存在于不同的空间内,它只在这个空间内发生作用. 物体没用了,空间就把它剔除,不然既占地方,又需要花精力管理. 需要它的时候,就把它造出来,不需 ...