一起学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编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
随机推荐
- 19.QT-事件发送函数sendEvent()、postEvent()
Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: ...
- 利用JavaScriptSerializer转json实用方法
项目中经常碰到需要输出的是json数据,使用JavaScriptSerializer转换,以前老的方法如下. JavaScriptSerializer jss = new JavaScriptSeri ...
- jmeter接口测试报java.net.SocketException: Socket closed错误。
如题,jmeter报出java.net.SocketException: Socket closed,我查询了下,服务器是正常的,可以返回数据,基本确定问题出在我这边jmeter.查询原因,看到有人说 ...
- centos7 mysql安装
一.系统环境 [root@localhost home]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 二.mysql安装 ...
- form 表单提交返回值问题
form不比ajax,即使后台返回值后,在页面也不知道怎么去取值判断提交状态.所以前几天结合网上资料整了一个小案例,需要用到ajaxSubmit,即通过ajax来提交表单,好处在于可以在任何情况下进行 ...
- 在单用户模式下修改CentOS的root密码
我们在使用CentOS的过程中可能会发生忘记root用户密码的情况,本文就从应用的角度简单介绍一下如何在单用户模式下修改root用户的密码. 开启CentOS,进入系统启动菜单 将光标停留在系统开机时 ...
- hackathon活动复盘
复盘: hackathon技术创新型.理念创新落地型评委的一个评估点:在公司怎么落地的问题5分钟的demonstration,要进行测试,5分钟很快的:表达方式:common language,让人能 ...
- 基于Spring Cloud、JWT 的微服务权限系统设计
基于Spring Cloud.JWT 的微服务权限系统设计 https://gitee.com/log4j/pig https://github.com/kioyong/spring-cloud-de ...
- app后端设计(5)-- 表情的处理
在app的应用中,文字中夹带表情是个很常见,那么,在后台处理表情的时间,我遇到过下面两个问题: 1. 表情在mysql的存储. 表情的utf8编码,有时是有4个字节的,所以在一般的utf编码是没法存储 ...
- python3:操作excel文件
前提:自动化接口测试中,可以将用例放在excel中管理.结合实际情况讲解如何操作excel文件 1.安装xlrd:pip install xlrd 2.导入模块:import xlrd 3.打开Exc ...